gpt4 book ai didi

c# - 单选按钮上的模型绑定(bind)为该属性返回 null (ASP.NET Core)

转载 作者:太空狗 更新时间:2023-10-29 22:21:39 24 4
gpt4 key购买 nike

所以我有四个单选按钮,它们绑定(bind)到我的模型的一个属性,它们都具有不同的值。但是,当表单提交时,该属性返回 null(而其他所有内容都正确返回)。代码:

<div id="RadioButtonGroup">
<label asp-for="Object.PropertyOne" class="radio-inline">
<input asp-for="Object.PropertyOne" value="A" type="radio" name="optradio" >Option One
</label>
<label asp-for="Object.PropertyOne" class="radio-inline">
<input asp-for="Object.PropertyOne" value="B" type="radio" name="optradio" >Option Two
</label>
<label asp-for="Object.PropertyOne" class="radio-inline">
<input asp-for="Object.PropertyOne" value="C" type="radio" name="optradio" >Option Three
</label>
<label asp-for="Object.PropertyOne" class="radio-inline">
<input asp-for="Object.PropertyOne" value="D" type="radio" name="optradio" >Option Four
</label>
</div>

我选择一个,提交表单,Object.PropertyOne 返回 null。但是,如果我在我的 ViewModel 中手动设置 Object.PropertyOne,它会正确显示。我错过了什么?

最佳答案

不要手动为单选按钮指定名称。如果你删除 name="optradio" 你会看到标签助手会发出一个名字。如果您指定自己的名称,Model Binder 将无法正确处理您的属性。

您可以通过添加第二个属性 PropertyTwo 并查看源代码和调试 Controller 来查看实际效果。您会发现 PropertyTwo 的每个单选按钮的名称都是 Object_PropertyTwo,并且它将正确绑定(bind)(而 Object.PropertyOne 仍然无法绑定(bind)绑定(bind)):

型号

 public class MyObject
{
public string PropertyOne { get; set; }
public string PropertyTwo { get; set; }
}

public class MyModel
{
public MyObject Object { get; set; }
}

Controller

 public ActionResult Foo()
{
return View(new MyModel() { Object = new MyObject() });
}

[HttpPost]
public ActionResult Foo(MyModel model)
{
return View();
}

查看

@{
ViewData["Title"] = "Test Page";
}

@model MyModel

<form asp-controller="Home" asp-action="Foo" method="post">
<div id="RadioButtonGroup">
<label asp-for="Object.PropertyOne" class="radio-inline">
<input asp-for="Object.PropertyOne" value="A" type="radio" name="optradio" >Option One
</label>
<label asp-for="Object.PropertyOne" class="radio-inline">
<input asp-for="Object.PropertyOne" value="B" type="radio" name="optradio" >Option Two
</label>
<label asp-for="Object.PropertyOne" class="radio-inline">
<input asp-for="Object.PropertyOne" value="C" type="radio" name="optradio" >Option Three
</label>
<label asp-for="Object.PropertyOne" class="radio-inline">
<input asp-for="Object.PropertyOne" value="D" type="radio" name="optradio" >Option Four
</label>
</div>
<div id="RadioButtonGroup">
<label asp-for="Object.PropertyOne" class="radio-inline">
<input asp-for="Object.PropertyTwo" value="A" type="radio">Option One
</label>
<label asp-for="Object.PropertyOne" class="radio-inline">
<input asp-for="Object.PropertyTwo" value="B" type="radio">Option Two
</label>
<label asp-for="Object.PropertyOne" class="radio-inline">
<input asp-for="Object.PropertyTwo" value="C" type="radio">Option Three
</label>
<label asp-for="Object.PropertyOne" class="radio-inline">
<input asp-for="Object.PropertyTwo" value="D" type="radio">Option Four
</label>
</div>
<input type="submit" />
</form>

关于c# - 单选按钮上的模型绑定(bind)为该属性返回 null (ASP.NET Core),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36870942/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com