Static content in url routing - asp.net-mvc-4

i am having two routes
context.MapRoute("",
"Route1/{controller}/{programid}/{action}"
);
context.MapRoute("",
"Route2/{controller}/{programid}/{action}"
);
Url.Action("action2", "controller2", new{programid = 123});
Resultant URL : Route1/controller2/123/action2
Is it possible to get the url below:
Expected URL : Route2/controller2/123/action2

Modify your route as
context.MapRoute("Route1",
"Route1/{controller}/{programid}/{action}"
);
context.MapRoute("Route2",
"Route2/{controller}/{programid}/{action}"
);
Then use Url.RouteUrl like
Url.RouteUrl("Route1", YourRouteProperties }
or
Url.RouteUrl("Route1", new { controller = "YourController", action = "YourAction",
programid= "YourProgramId"}}

Related

I want to get recipient_signing_uri from the Docusign API response but it returns null

Here is the code
public function send(Request $request): object
{
$apiClient = new ApiClient();
$apiClient->getOAuth()->setOAuthBasePath(env('DS_AUTH_SERVER'));
try {
$accessToken = $this->getToken($apiClient);
} catch (\Throwable $th) {
return back()->withError($th->getMessage())->withInput();
}
$userInfo = $apiClient->getUserInfo($accessToken);
$accountInfo = $userInfo[0]->getAccounts();
$apiClient->getConfig()->setHost($accountInfo[0]->getBaseUri() . env('DS_ESIGN_URI_SUFFIX'));
$envelopeDefenition = $this->buildEnvelope($request);
try {
$envelopeApi = new EnvelopesApi($apiClient);
$result = $envelopeApi->createEnvelope($accountInfo[0]->getAccountId(), $envelopeDefenition);
dd($result);
} catch (\Throwable $th) {
return back()->withError($th->getMessage())->withInput();
}
return view('backend.response')->with('result', $result);
}
When I print $result variable it returns a response like this
container: array:8 [
"bulk_envelope_status" => null
"envelope_id" => "b634f8c5-96c5-4a18-947f-59418d8c4e03"
"error_details" => null
"recipient_signing_uri" => null
"recipient_signing_uri_error" => null
"status" => "sent"
"status_date_time" => "2023-02-16T07:24:39.1570000Z"
"uri" => "/envelopes/b634f8`your text`c5-96c5-4a18-947f-59418d8c4e03"
]
I want to get the value of recipient signing uri in response but in my case it returns null
How I can achieve this? Will anyone suggests?
createEnvelope creates the envelope. It does not give you an URL for an embedded recipient view (signing ceremony). In order to get that URL, you need to make an additional call to
EnvelopeViews:createRecipient/
See this page for more info.
Also
$apiClient->getConfig()->setHost($accountInfo[0]->getBaseUri() . env('DS_ESIGN_URI_SUFFIX'));
You are using the first entry in the UserInfo returned data's accountInfo array. That's not a good idea. Instead, look for the entry that is the user's default account.
Or if your application is designed to work with a specific eSign account, then make sure the user has access to that account.
It is very common for DocuSign customers to have access to more than one account.

Yii2 redirect to previous page after update review

I have a page comp/computer?id=15
it has reviews that can be edited through link
http://comp/computer/update?id=3 = with FORM and submit button
how to go back after sumbit
public function actionUpdate($id)
{
$model = new ReviewForm();
$comment = Review::findOne($id);
if ($model->load($this->request->post())) {
$comment->text = $model->text;
if ($comment->save(false)) {
return $this->redirect(["?id=15"], ); ????????????
}
Yii::$app->session->setFlash(
'success',
'Success'
);
}
$model->setAttributes($comment->getAttributes(['name', 'email', 'text']));
return $this->render('update', compact('model'));
}
simply use referrer.
return $this->redirect(Yii::$app->request->referrer)
If it has no referrer or link open directly then you should either pass computer_id as param or you must have computer_id as foreign key in your review table.
Let say you have relationship with review and computer table. then you can use like this.
$compId = $comment->computer_id; // or 15 or you can paas param here
return $this->redirect(["comp/computer", "id"=> $compId]);
if comp is your hostname then
return $this->redirect(["computer", "id"=> $compId]);
its should be controller/action
return $this->redirect(["controllerId/actionId", "id"=> $compId]);
Send via mobile, sorry for typos.

return datat as json in razor page

I'm using asp core razor pages ,
and i'm trying to return data as json by controller
this is working fine for me :
return Json(new { data = _db.Clients.FromSqlRaw("select * from Clients where nom_createur != 'X'").ToList() });
But this
return Json(new { data = _db.Clients.FromSqlRaw("select nom_createur,COUNT(Id_Client) as 'counte' from clients where Nom_Createur != 'X' group by nom_createur").ToList() });
given this error :
The required column 'Id_Client' was not present in the results of a 'FromSql' operation
ps: i really need to use FromSqlRaw

Angular 6, catching ' error/not valid parameter ' in activated route

I am facing a problem with route parameter error catching. Here is the situation explained below.
The route params are as follows for displaying data in components of navbar:
http://localhost:4200/{ company_type }/{ company_name }/{ org-id }/{ component_name }
The website is opening even when I change the company_name to any string and company_id to null || 14cd156. I will get articles when I change company name in route. But, when I change id I get an error
core.js:1624 ERROR Error: Uncaught (in promise): HttpErrorResponse: {"headers":{"normalizedNames":{},"lazyUpdate":null},"status":404,"statusText":"Not Found","url" ...
The API doesn't check for company name. It only checks the company id company coming from route params. What I want to do is: to navigate to not-found page in case the company_name and company_id are invalid. Let's say,
company_type = consulting
company_name = ABC
id = 1
page=Article
In page Article when I change http://localhost:4200/consulting/ABC/5/articles to http://localhost:4200/consulting/3edsads/5/artciles the website shows data of Articles page. But, the data is route parameter is wrong.
articles.component.ts
getOrgArticles(page: number = 1) {
let queryParams = this.getQueryParams(page);
this.queryArticles =
this.service.getOrgArticles(queryParams).
subscribe((data: any) => {
this.page = page;
this.pageSize = queryParams['per-page'] || this.pageSize;
this.articles = this.articles.concat(data['articles']);
this.pageCount = data._meta.pageCount;
this.isLastPage() ? this.hideNextButton() : this.showNextButton();
this.totalCount = data._meta.totalCount;
},
error => {
});
}
service.ts
getOrgArticles(queryParams) {
const qpString = this.queryString(queryParams);
return this.http.get(`${this.api}/articles?${qpString}`);
}
I really wish to find some solution from you. Thank you

Different parameter name in MVC

In MVC 4 kendo grid, I have passed like this in link column.
columns
.Bound(m => m.TID )
.ClientTemplate("<a href='"
+ Url.Action("AddMerchant", "Merchant", new { MerchantId = 10 ,AddressId = 30})
+ "'>Edit</a>");
so i got like this
/Merchant/AddMerchant?MerchantId=10&AddressId=30
But I need
/Merchant/AddMerchant/10/30 .
but if I get I can't able to read parameter value in action named like MerchantId and AddressId
You can achieve it by map custom routes to the RouteConfig.cs file for your controller and its action method:
routes.MapRoute(
name: "Merchant",
url: "Merchant/AddMerchant/{MerchantId}/{AddressId}",
defaults: new { controller = "Merchant", action = "AddMerchant }
);