使用@Html.Hidden向Controller传值时kullaniciLog字段为Null的问题
问题场景
使用@Html.Hidden传递kullaniciLog字段到Controller时,该字段接收值为Null,F12查看页面源码显示字段值正确,其余字段可正常接收,尝试@Html.HiddenFor也未解决。
可能的原因及解决方法
1. 修正HiddenFor的写法与属性大小写
你当前的HiddenFor写法存在路径错误,且HTML属性value在匿名对象中需首字母大写(C#语法要求)。如果视图直接绑定Repairs模型,应改为:
@Html.HiddenFor(m => m.kullaniciLog, new { Value = usersDetails.username })
若视图使用的是包含Repairs的父模型,才需要写m => m.Repairs.kullaniciLog,请根据实际视图模型结构调整。
2. 替换为原生HTML隐藏输入框
绕过HtmlHelper的自动绑定逻辑,直接使用原生input标签,避免Helper的潜在冲突:
<input type="hidden" name="kullaniciLog" value="@usersDetails.username" />
3. 检查页面是否存在重复命名的元素
排查页面中是否有其他name="kullaniciLog"的输入元素(比如重复的Hidden、input框),重复命名会导致模型绑定获取到错误的值(或被覆盖为空)。
4. 排查ModelState绑定错误
在Controller的Action中添加ModelState校验,查看是否存在绑定错误:
public ActionResult Repairs(Repairs repairs) { if (!ModelState.IsValid) { // 输出所有绑定错误,可调试查看具体问题 var errorMessages = ModelState.Values.SelectMany(v => v.Errors.Select(e => e.ErrorMessage)); // 此处可添加日志或调试代码 } // 后续逻辑 }
5. 确认Ajax表单依赖脚本加载
确保页面已正确引入jquery.unobtrusive-ajax.js,虽然其他字段能接收,但脚本缺失可能导致表单提交方式异常,间接影响个别字段绑定。
内容的提问来源于stack exchange,提问作者krautcez
相关产品推荐
相关产品推荐

