首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过帐表单将路由值作为querystring而不是url段发送

过帐表单将路由值作为querystring而不是url段发送
EN

Stack Overflow用户
提问于 2019-01-07 02:36:53
回答 1查看 45关注 0票数 0

当使用@Html.BeginForm发布表单时,生成的url中的路由值将作为查询字符串而不是url段发送,从而导致不正确的路由。

控制器:

代码语言:javascript
复制
[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):

代码语言:javascript
复制
@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

感谢你的帮助,谢谢...

EN

回答 1

Stack Overflow用户

发布于 2019-01-07 03:40:11

您可以尝试以下步骤:

步骤1:在配置文件中写入路由。

代码语言:javascript
复制
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方法。

代码语言:javascript
复制
public ActionResult AddSupplier(int id, int id1)
{

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54064672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档