gpt4 book ai didi

asp.net-mvc - 带有 MVC Razor 的输入类型复选框

转载 作者:行者123 更新时间:2023-12-03 18:17:40 32 4
gpt4 key购买 nike

为什么我的复选框的值没有传递给我的 ViewModel?

我的观点(我省略了与这篇文章无关的输入标签):

@model Pro.WebUI.ViewModels.UserViewModel

@using (Html.BeginForm("ManageUsers", "Administration", FormMethod.Post,
new { id = "request-form", @class = "form-horizontal" }))
{
<div class="form-group">
<label for="inputAuthorize" class="col-lg-2 control-label">Authorize</label>
<div class="col-lg-8">
<input type="checkbox" id="Authorized" name="Authorized" value="@Model.Authorized" />
</div>
</div>
<div class="form-group">
<div class="col-lg-10 col-lg-offset-2">
<br /><br />
<button type="submit" class="btn btn-primary">Submit Request</button>
</div>
</div>
}

我的 View 模型:
public class UserViewModel
{
[Key]
public string UserID { get; private set; }

public string UserName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public bool Authorized { get; set; }
public string Email { get; set; }
public string Phone { get; set; }
public string Notes { get; set; }
}

我的 Controller :
 [HttpPost]
public ActionResult ManageUsers(UserViewModel model)
{
if (ModelState.IsValid)
{
ProcurementUser obj = new ProcurementUser();
obj.UserName = model.Email;
obj.FirstName = model.FirstName;
obj.LastName = model.LastName;
obj.Email = model.Email;
obj.Phone = model.Phone;
obj.Authorized = model.Authorized;
UserRepository.SaveUser(obj);
//success message
}
return View(model);
}

我没有包含所有输入标签,但是当我在没有复选框的情况下单步执行代码时,所有值都会被传递。我查看了 SOF 上的其他复选框问题,但它们大多使用 @Html.Checkbox 或 @Html.CheckboxFor。我只想使用 input type="checkbox"

最佳答案

正如评论中所暗示的,您遇到的问题是您没有真正正确地创建复选框:

假设您的模型具有 Authorized = true您的加价将是:

<input type="checkbox" id="Authorized" name="Authorized" value="true" />

同样的 false状态将导致:
<input type="checkbox" id="Authorized" name="Authorized" value="false" />

但这些不是“选中”复选框——它们仍然“未选中”,并且需要 checked属性设置:
<input type="checkbox" id="Authorized" name="Authorized" value="true" checked />

正如斯蒂芬指出的那样 - 未选中的复选框不会将任何数据发送回服务器,因此您不会对选择了哪些选项感到困惑。

最后,正如我们所指出的,您的 <label> element 用于查找 inputAuthorize 的不存在的字段而不是 Authorized .

如果您使用 @Html.CheckboxFor,所有这些问题都会为您解决。和 @Html.LabelFor helper 类。

关于asp.net-mvc - 带有 MVC Razor 的输入类型复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27494809/

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