文本区域无法正确绑定到.net内核中的模型
我有一个在.net核心Web应用程序中有多个字段的模型。
该模型绑定到视图,该视图使用asp-for标签助手来呈现隐藏的输入,文本输入,选择列表和文本区域。
问题..
在发布到服务器上时,除文本区域外,所有输入均正确绑定。 这总是通过为空。
更奇怪的是,如果我在渲染视图之前为文本区域属性赋值,则该值将按预期显示在文本区域中(而不是奇怪的位),并且在发布到服务器时,该值将被回传。 但是,如果我尝试更改此值,尽管Chrome在网络工具中显示新值已发布,但仍然会在模型绑定中找到原始值。
有没有其他人经历过这样的事情? 我是一个白痴(再次)?
下面是我的代码的一个子集:
渲染视图:
public IActionResult Review()
{
var requestVm = new Request();
requestVm.AdditionalComments = "This was set in the model before rendering the view and should be overwritten.";
return View(requestVm);
}
HTML:
@model Models.Request
<form asp-controller="Request" asp-action="Review" method="post" role="form" enctype="multipart/form-data" class="ui form review">
<textarea asp-for="AdditionalComments" class="AdditionalComments"></textarea>
</form>
发布行动:
[HttpPost]
public IActionResult Review(Request requestVm)
{
// Some logic in here to save to db etc..
return RedirectToAction("Thank_You");
}
正如你所看到的,没有什么特别的。
任何帮助赞赏。
标记
请在post方法中使用Bind(Include = string)属性,并提及所有属性名称,包括缺少的属性名称。 这演示了使用属性:
[HttpPost]
public IActionResult Review([Bind(Include = "AdditionalComments,other properties")] Request requestVm)
{
// Some logic in here to save to db etc..
return RedirectToAction("Thank_You");
}
让我知道如果这没有帮助。
正如我所猜测的那样,代码实际上并没有错。
相反,在各种设计更改之前,在项目的较早阶段通过部分添加到页面的相同属性存在传统隐藏输入。 它解释了为什么设置加载值正在进行,并且文本中的更新从来没有工作,因为模型只是绑定到找到的属性的第一个实例。
必须是简单的..希望这将帮助任何发现自己处于类似情况的人。
链接地址: http://www.djcxy.com/p/53973.html上一篇: Text area not binding correctly to model in .net core
下一篇: Model is getting null on post on Child Partial page MVC5