当使用@Html.BeginForm发布表单时,生成的url中的路由值将作为查询字符串而不是url段发送,从而导致不正确的路由。
控制器:
[HttpPost]
[Route("Add-Supplier/{id}/{supplierId}")]
[ActionName("Add-Supplier")]
public ActionResult AddSupplier(int id, int supplierId)
{
rmPurchaseOrder purchaseOrder = rmPurchaseOrder.Load(id);
if (purchaseOrder != null)
{
purchaseOrder.SupplierId = supplierId;
purchaseOrder.Save();
}
return RedirectToAction("Purchase-Order", new { id });
}razor (cshtml):
@using (Html.BeginForm("Add-Supplier", "Purchase-Orders", new { id = Model.PurchaseOrderId, supplierId = Model.SupplierId }, FormMethod.Post, new { role = "form" }))
{
<div class="form-group stMarTop10">
@Html.LabelFor(m => m.SupplierId, new { @class = "label label-default" })
@(Html.DropDownListFor(m => m.SupplierId, Model.SupplierSelectListItems, new { onchange = "this.form.submit();", @class = "form-control wdef" })
</div>
}表单post使用以下代码生成的url为:
/Add-Supplier/3777?supplierId=25
而我想要的是:
/Add-Supplier/3777/25
感谢你的帮助,谢谢...
发布于 2019-01-07 03:40:11
您可以尝试以下步骤:
步骤1:在配置文件中写入路由。
routes.MapRoute(
name: "Segment",
url: "Add-Supplier/{id}/{id1}",
defaults: new
{
controller = "Your controller Name",
action = "Your Action Name",
id = UrlParameter.Optional,
id1 = UrlParameter.Optional
}
);第二步:用下面的方法替换你的action方法。
public ActionResult AddSupplier(int id, int id1)
{
}https://stackoverflow.com/questions/54064672
复制相似问题