2012-08-23 43 views
0

我有一個控制器:如何回發一個複選框,在MVC

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> 

所以我想要實現這裏是你進來,複選框被選中。如果您點擊提交,則數值會很好地發佈。但是,如果您單擊禁用,則複選框將被禁用。然後你點擊提交。我期待,因爲該複選框被選中還是和我添加了一個隱藏字段調回售出的價值將是真實的。這就是爲什麼我添加了隱藏字段的整點。

誰能告訴我,爲什麼選中複選框,但被禁用的帖子回售時存在應保持價值的隱藏字段假時?

+0

我不希望有把這個成VS,什麼是你的HTML的樣子,線索會在那裏,因爲它看起來像它的瀏覽器的行爲,而不是MVC ...或者你有兩個名稱相同的字段這是令人困惑的模型綁定。 – joocer

回答

2

禁用=禁用不發送值,要保留的價值被更新禁用它是什麼只讀=只讀。即

$('.sold').attr("readonly", "readonly"); 

你還需要應用一些CSS來使它看起來被禁用。

+0

我想你會發現只讀的複選框不起作用 – AnonyMouse