C#asp.net mvc Set CheckBoxFor已检查的具有Model Value的属性

C# asp.net mvc Set CheckBoxFor checked-property with Model-Value

本文关键字:Value 属性 Model 检查 mvc net Set CheckBoxFor C#asp      更新时间:2023-09-26

在我的表单中,我有一个复选框,当我单击该复选框时,就会启用一个文本框。当我提交表单时,我得到了两个值(复选框和文本框)和站点刷新,刷新后复选框被选中,但文本框被禁用,但有最后一个插入值。

如果我再次提交而没有做任何事情,文本框将返回null,而不是最后一个插入值。

我希望复选框从我的模型中获得值,并更改禁用文本框的属性的行为,如果没有新的值将被插入,它应该返回最后一个插入值。

当我将model属性设置为false时,复选框也会被选中。有人知道我能做什么吗?

视图:

@Html.TextBoxFor(m => m.FilterModel.FilterOrgNameValue, new { @class = "form-control", @id = "OrganisatioName", @disabled = "disabled" })
@Html.CheckBoxFor(m => m.FilterModel.FilterOrgNameIsCheckedValue, new { @class = "form-control", @id = "OrgNameChecked", @checked = (Model.FilterModel.FilterOrgNameIsCheckedValue ? "checked" : "unchecked")})

JavaScript:

 $("#OrgNameChecked").click(function () {
            $('#OrganisatioName').attr("disabled", $(this).is(':unchecked'));
        });

型号:

public bool FilterOrgNameIsCheckedValue { get; set; }

控制器(通过提交调用的函数):

public ActionResult Index(AdminOrganizationModel m)
        {
            AdminOrganizationModel model = new AdminOrganizationModel();
            if(TempData["model"] != null)
            {
                m = (AdminOrganizationModel)TempData["model"];
            }
            if(m.FilterModel == null)
            {
                m.FilterModel = new AdminOrganizationFilterModel();
            }
            model = m;
            OrganizationBusinessObject organizationBusinessObject = new OrganizationBusinessObject(DbContext);
            var organizations = DbContext.GetAllEntitiesQueryable<Organization>();
            organizations = FilterOrganizations(organizations, model); 
            InitializeLicenseList(1);
            AdminOrganizationModelBuilder modelBuilder = new AdminOrganizationModelBuilder();
            IList<AdminOrganizationModel> organizationsModels = modelBuilder.GetModelCollection(organizations);
            model.Organizations = new AjaxGridFactory().CreateAjaxGrid(organizationsModels.AsQueryable(), 1, false, 10) as AjaxGrid<AdminOrganizationModel>;
            return View(model);
        }

提交后的字段

Simple Solution;)

我在视图中添加了一个简单的if语句:

<div class="col-sm-2">
@if (Model.FilterModel.FilterOrgNameIsCheckedValue)
{
    @Html.TextBoxFor(m => m.FilterModel.FilterOrgNameValue, new { @class = "form-control", @id = "OrganisatioName"})
}
else
{
    @Html.TextBoxFor(m => m.FilterModel.FilterOrgNameValue, new { @class = "form-control", @id = "OrganisatioName", @disabled = "disabled" })
}
 </div>

我想这不是最好的方法,但它有效=)