ASP.NET MVC значение bool, возвращаемое из представления, равно 1 или 0

Я использую ASP.NET MVC, и у меня есть некоторые проблемы с использованием CheckBoxFor. Вот моя проблема:

У меня есть следующий код в представлении:

@Html.CheckBoxFor(model => model.stade, new { @id = "stade" })

model.stade имеет тип bool. В моем контроллере у меня есть:

//Editar
[HttpPost]
public ActionResult InvoiceType(int Id, string Name, string Code, string Stade)
{
    clsInvoiceTypea Model = new clsInvoiceType();
    Model.Id = Id;
    Model.Name = Name;
    Model.Code = Code;
    Model.Stade = stade== "1" ? true : false;
    return PartialView(Model);
}

Я получаю ошибку, потому что когда Model.Stade передается в представление со значением 1 или 0, и я получаю сообщение об ошибке "Не удается распознать строку как допустимое логическое значение", но если Model.stade является логическим значением, почему модель передается в представление, например 0 или 1? Как я могу решить это?

1 ответ

Здесь идет мое решение -

Пусть ваша модель будет -

public class clsInvoiceTypea
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Code { get; set; }
        public bool stade { get; set; }
    }

Пусть ваше действие HttpGet будет -

public ActionResult GetInvoice()
{
    clsInvoiceTypea type = new clsInvoiceTypea();
    return View(type);
}

И соответствующий вид -

@model YourValidNameSpace.clsInvoiceTypea

@{
    ViewBag.Title = "GetInvoice";
}

<h2>GetInvoice</h2>

@using (Html.BeginForm("SubmitData","Home",FormMethod.Post)) {
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)

    <fieldset>
        <legend>clsInvoiceTypea</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.Name)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Name)
            @Html.ValidationMessageFor(model => model.Name)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Code)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Code)
            @Html.ValidationMessageFor(model => model.Code)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.stade)
        </div>
        <div class="editor-field">
            @Html.CheckBoxFor(model => model.stade)
            @Html.ValidationMessageFor(model => model.stade)
        </div>

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

Пусть следующее будет вашим действием HttpPost -

[HttpPost]
public ActionResult SubmitData(clsInvoiceTypea model)
{
    return View();
}

Когда вы запустите код, вы получите следующий вид -

Если вы установите флажок и нажмете кнопку "Создать", если вы установите точку останова для метода POST и проверите значение, вы получите значение true.

Другие вопросы по тегам