【发布时间】:2018-03-14 17:29:40
【问题描述】:
我有一个表单,假设将我的Encounter 模型传递给我的CharacterController 的CreateCharacter 操作方法。
这是表格:
<form asp-action="CreateCharacter" asp-controller="Character" data-ajax="true" data-ajax-mode="replace" data-ajax-update="#character-container">
<button class="btn btn-default" type="submit">Create Chracter</button>
</form>
这是控制器方法:
public ActionResult CreateCharacter(Encounter encounter)
{
Character character = new Character { Encounter = encounter };
return PartialView("Add", character);
}
encounter 的所有属性在不应该为 null 时都为 null。澄清一下,Encounter 是表单所在视图的模型。在这个视图中,我使用了Encounter 的Name 属性,它工作正常。但是,当我将模型传递给控制器时,Name 属性现在为空。
我很困惑为什么会发生这种情况,因为我在其他地方有一个非常相似的表格可以很好地通过模型。
【问题讨论】:
-
该表单如何填充模型?没有输入字段。表单应该填充哪些字段?
-
我正在使用表单作为解决方法,以便在单击按钮时将模型发送到控制器。这可能是我的问题吗?
-
但是没有东西可以发送。该表单只有一个提交按钮。它不发送任何数据,因为没有输入字段来表示要发送的数据。如果它什么都不发送,那么该操作将获得一个空值。
-
这是有道理的。我现在添加了隐藏输入来传递属性。谢谢你。如果您不介意我问,是使用表单将模型传递给控制器的最佳实践吗?
-
这通常是它们提交给控制器的方式。
标签: c# razor asp.net-core asp.net-core-mvc