asp.net-mvc - Html.BeginForm RouteValueDictionary 与 Html.Hidden

标签 asp.net-mvc

下面两种将参数传递给 Controller ​​操作的方法有什么区别?我应该什么时候使用其中之一?

第一种方法:

@using (Html.BeginForm("ActionName", "ControllerName", new {orderId = Model.orderID, productId = Model.productID}, FormMethod.Post))
{
    ...
}

第二种方法:

@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post))
{ 
    ...

    @Html.Hidden("orderId", model.orderID)
    @Html.Hidden("productID", model.productID)
}

谢谢。

最佳答案

第一种方法是使用 FormExtensions.BeginForm将值附加到表单提交 url 的方法覆盖:

<form action="/ControllerName/ActionName?orderId=<Model.orderID>&productId=<Model.productID>" action="post">

这里的参数可以从路由参数集合中获取。

第二种方法将简单地添加两个隐藏字段,它们可以绑定(bind)到传入和传出 Controller 操作的模型对象。

关于asp.net-mvc - Html.BeginForm RouteValueDictionary 与 Html.Hidden,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25180091/

相关文章:

asp.net-mvc - 将日期格式化为仅月和年 - "MMM-yyyy"

asp.net - 获取用户及其角色的列表

asp.net-mvc - 让 AsyncController 与 Ninject 一起工作

c# - ASP.NET WebAPI 创建一级 JSON

asp.net-mvc - 如何禁用@Html.EditorFor

c# - MVC 模型绑定(bind)返回对象数组

jquery - 具有自动刷新功能的 MVC 部分 View

javascript - 如何为 id 的 @html.validation 赋值?

ASP.NET:添加仅在代码编辑器中可见的 ASPX/查看注释(不发送到浏览器)

c# - 在浏览器中渲染 PDF - 在 "localhost"下运行时会显示 PDF,但在用我的计算机名称替换 "localhost"时不会显示