我有一个控制器:
using System;
using System.Collections.Generic;
using System.Web.Mvc;
using MvcApplication5.Models;
namespace MvcApplication5.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
var car = new Car { Sold = true };
return View(car);
}
[HttpPost]
public ActionResult Index(Car car)
{
return View(car);
}
public ActionResult About()
{
return View();
}
}
}
模型:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MvcApplication5.Models
{
public class Car
{
public bool Sold { get; set; }
}
}
这是视图:
@model MvcApplication5.Models.Car
@using (Html.BeginForm())
{
@Html.CheckBoxFor(m => m.Sold, new { @class = "sold" })
@Html.HiddenFor(m => m.Sold)
<div class="disable">Disable</div>
<button type="submit" value="Submit">Submit</button>
}
<script type="text/javascript">
$(function () {
$('.disable').click(function () {
$('.sold').attr("disabled", "disabled");
});
})
</script>
所以我在这里想要实现的是你进来并选中复选框。如果您单击提交,则该值将被很好地回发。但是,如果您单击禁用该复选框将被禁用。然后单击提交。我期待,因为该复选框仍处于选中状态,并且我添加了一个隐藏字段,返回的已售值将是真实的。这就是我添加隐藏字段的全部意义所在。
谁能告诉我为什么当有一个隐藏字段应该保持该值时,复选框在选中但禁用时为 Sold 发回 false ?