0

私はコントローラーを持っています:

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 が返される理由を誰か教えてもらえますか?

4

1 に答える 1

2

disabled=disabled は値を送信しません。更新されないようにするために値を保持したいのは、readonly=readonly です。すなわち

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

また、無効に見えるように CSS を適用する必要があります。

于 2012-08-23T22:34:04.717 に答える