修改Html.beginform()后,MVC 4页面不工作

本文关键字:4页 MVC 工作 Html beginform 修改 | 更新日期: 2023-09-27 18:17:03

我一直在编辑的顶部使用这一行。cshtml页面:

@using (Html.BeginForm())

但是我把它改成:

@using (Html.BeginForm("Edit", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))

当我点击提交时我试着运行这个方法:

public ActionResult Edit([Bind(Include = "description,tags,files,fileString")] Task task, int keyId, string editFiles)

我得到这个错误:

参数字典包含参数'keyId'的空条目非空类型的系统。Int32' for方法"System.Web.Mvc.ActionResult编辑(Combined.Models。任务,Int32,System.String)' in 'Combined.Controllers.HomeController'。一个可选的参数必须是引用类型、可空类型,或者声明为可选参数。参数名称:parameters描述:An执行当前web时发生未处理的异常请求。有关的详细信息,请查看堆栈跟踪错误和它在代码中的起源。

Exception Details: System。ArgumentException:参数字典中包含非空参数'keyId'的空条目类型的系统。Int32' for方法'System.Web.Mvc.ActionResult编辑(Combined.Models。Task, Int32, System.String)' in '"Combined.Controllers.HomeController"。可选参数必须为a引用类型、可空类型或声明为可选类型参数。参数名称:parameters

源错误:

的过程中产生了一个未处理的异常当前的web请求。关于来源和地点的信息可以使用下面的异常堆栈跟踪来识别异常。

我试着把这行改成:

@using (Html.BeginForm("Edit", "Home", FormMethod.Post, new { enctype = "multipart/form-data", keyId = Model.keyId }))

但没有任何影响。我做错了什么?

修改Html.beginform()后,MVC 4页面不工作

将KeyId添加到表单中作为隐藏输入,而不是在路由参数中,因为您正在发布。

@Html.HiddenFor(model => model.keyId)

(实际上,您将其添加为Html属性。在你的页面上查看源代码,看看它是在哪里呈现的

谢谢@ehsan-sajjad,在我的情况下,我使用了错误的过载,你的评论帮助了我。

就是这样做的,将id放在控制器之后,表单方法之前:

@using (Html.BeginForm("Edit", "Home", new { keyId = Model.keyId }, FormMethod.Post))