我正在尝试发布一个表单,其中一个变量是前一个URL的Action,但每当我发布它时,变量都变为null。我怎样才能坚持这些信息至少直到它到达POST动作?
我已尝试同时使用Url.RequestContext.RouteData.Values["action"]
和Request.UrlReferrer
来获取操作。
在我的视图中,我尝试POST文件,操作名称和ID:
Html.BeginForm("Edit", "Expenses", FormMethod.Post, new { enctype = "multipart/form-data", actionName = actionName, id = idInt })
如果我保持原样,Action名称为null,但如果我从BeginForm方法中删除 FormMethod.Post 部分,则Action名称已成功发布且文件为null
答案 0 :(得分:1)
您正在错误地使用Html.BeginForm
帮助程序方法!您将路由值和html属性混合到一个对象!
您当前的通话符合以下超载
public static MvcForm BeginForm(
this HtmlHelper htmlHelper,
string actionName,
string controllerName,
FormMethod method,
IDictionary<string, object> htmlAttributes
)
最后一个参数是 htmlAttributes 。因此,使用您的代码,它将生成表单标记标记,如此
<form action="/Expenses/Edit" actionname="someActionName" enctype="multipart/form-data"
id="22" method="post">
</form>
您可以看到Id
和action
成为表单的2个属性!
尝试this overload,您可以在其中指定路线值和htmlAttributes
@using (Html.BeginForm("AddToCart", "Home", new { actionName = "Edit", id = 34 },
FormMethod.Post,new { enctype = "multipart/form-data", }))
{
<input type="submit"/>
}
将使用您提供的路线值生成正确的表单操作属性值。