Проверьте скрытое значение bool для запуска метода

0

Таким образом, в основном у меня есть bool в моей модели, и, на мой взгляд, у меня есть скрытое поле, которое я установил как true, так и false, когда у меня есть определенный выбранный флажок. Теперь, когда у меня есть это, мне нужно как-то проверить значение скрытого поля и значение bool в контроллере. Если это правда, я хочу запустить метод, и если он ложный, я хочу, чтобы он пропустил этот метод.

Вот мой html невидимое поле внизу:

<div id="addTransfereeForm" class= "invisible" "whiteborder">
    <form name="addTransferee" id="addTransferee">
    <p><b><u>Add a New Transferee</u></b></p>
        Transfer Effective Date: <input type="text" name="transfereffectivedate"     class="datepicker"<br /> <br />
        Transferee Name: <input type="text" name="transfereename" /><br />
        Transferee Notice Address Line 1: <input type="text" name="transfereenoticeaddressline1" /><br />
        Transferee Notice Address Line 2: <input type="text" name="transfereenoticeaddressline2" /><br />
        Transferee Notice City: <input type="text" name="transfereenoticecity" /><br />
        Transferee Notice State: <input type="text" name="transfernoticestate" /><br />
        Transferee Notice Zip: <input type="text" name="tranfernoticezup" /><br />
        Transferee Notice Phone: <input type="text" name="transfereenoticephone" /><br />
        Transferee Payment Address Line 1: <input type="text" name="transfereepaymentaddressline1" /><br />
        Transferee Payment Address Line 2: <input type="text" name="transfereepaymentaddressline2" /><br />
        Transferee Payment City: <input type="text" name="transfereepaymentcity" /><br />
        Transferee Payment State: <input type="text" name="transfereepaymentstate" /><br />
        Transferee Payment Zip: <input type="text" name="transfereepaymentzip" /><br />
        Transferee Payment Phone: <input type="text" name="transfereepaymentphone" /><br />
        <input type="hidden" name="newtransferee" />
    </form>
</div>

Вот моя модель (NewTransferee - это bool, для которого я устанавливаю true или false):

 public class CreateTransferee
{
    public DateTime? TransferEffectiveDate { get; set; }
    public string TransfereeName { get; set; }
    public string TransfereeNoticeAddressLine1 { get; set; }
    public string TransfereeNoticeAddressLine2 { get; set; }
    public string TransfereeNoticeCity { get; set; }
    public string TransfereeNoticeState { get; set; }
    public string TransfereeNoticeZip { get; set; }
    public string TransfereeNoticePhone { get; set; }
    public string TransfereePaymentAddressLine1 { get; set; }
    public string TransfereePaymentAddressLine2 { get; set; }
    public string TransfereePaymentCity { get; set; }
    public string TransfereePaymentState { get; set; }
    public string TransfereePaymentZip { get; set; }
    public string TransfereePaymentPhone { get; set; }
    public bool NewTransferee { get; set; }
}

Вот мой контроллер (мне нужно отредактировать это, чтобы он проверял значение bool перед запуском конечной части):

 [NoCache]
    [HttpPost]
    [ValidateAntiForgeryToken]

    public JsonResult ResolveProfileSelectionRequired(ResolveProfileSelectionRequiredModel model)
    {
        var resolved = SqlDataProvider.ResolveProfileSelectionRequiredJobException(model);

        return resolved ? Json("Success") : Json("Failed");
    }

Наконец, у меня есть метод, который я создал для запуска, если bool истинно (это находится в SQLDataProvider.cs):

public static int CreateNewTransferee(CreateTransferee model)
    {

        using (var db = new NJB.NJBDataContext())
        {
            var result = db.SP_AddTransferee(
            model.TransferEffectiveDate,
            model.TransfereeName,
            model.TransfereeNoticeAddressLine1,
            model.TransfereeNoticeAddressLine2,
            model.TransfereeNoticeCity,
            model.TransfereeNoticeState,
            model.TransfereeNoticeZip,
            model.TransfereeNoticePhone,
            model.TransfereePaymentAddressLine1,
            model.TransfereePaymentAddressLine2,
            model.TransfereePaymentCity,
            model.TransfereePaymentState,
            model.TransfereePaymentZip,
            model.TransfereePaymentPhone);

           return (int) result.ReturnValue;
        }
    }
Теги:
model
controller

3 ответа

1
Лучший ответ

Если все, что вам нужно сделать, это проверить значение логического, это просто условное утверждение:

public JsonResult ResolveProfileSelectionRequired(ResolveProfileSelectionRequiredModel model)
{
    if (model.NewTransferee)
    {
        // do something
    }
    else
    {
        // do something else
    }
}

Не совсем понятно, какова ваша цель, поскольку ваш текущий оператор return зависит от вывода метода, который вы хотите только условно назвать. Все пути кода должны будут что-то вернуть. Может быть, вот так:

public JsonResult ResolveProfileSelectionRequired(ResolveProfileSelectionRequiredModel model)
{
    if (model.NewTransferee)
    {
        var resolved = SqlDataProvider.ResolveProfileSelectionRequiredJobException(model);

        return resolved ? Json("Success") : Json("Failed");
    }
    else
    {
        return Json("Success");
    }
}

Опять же, я не могу знать, не зная больше о вашем намеренном поведении для этого действия.

Стоит отметить, что на самом деле это не "MVC". В самом простом случае этот метод действия - это просто метод, который получает аргумент типа ResolveProfileSelectionRequiredModel. Условный оператор - это просто С#. Все пути кода, возвращающие значение, равны С#. Единственное, что "MVC" об этом методе заключается в том, что он возвращает JsonResult.


Изменить: я только что заметил... Значение, которое вы ищете, находится на модели CreateTransferee, но ваш контроллер получает ResolveProfileSelectionRequiredModel? Это значение на ResolveProfileSelectionRequiredModel? Они, похоже, очень похожи. Если он не на этой модели, вы можете либо добавить его в эту модель, либо использовать подход @Raidri, чтобы добавить его в качестве явного параметра для действия контроллера.

1

Разверните действие вашего контроллера новым параметром:

public JsonResult ResolveProfileSelectionRequired(ResolveProfileSelectionRequiredModel model, bool newtransferee = false)

и проверьте его внутри действия.

  • 0
    Хорошо, я знаю, что это вопрос noob, но это лучший способ проверить это с помощью оператора if-else и применить метод, который должен быть запущен, когда true, и передать метод, когда false?
  • 1
    Да (достаточно утверждения if , нет необходимости в else )
0

Вы можете использовать:

if (Request.Form["newtransferee"].ToLower() == "true")

или он работает, если вы пишете это вместо руководства html?

@Html.HiddenFor(model => model.NewTransferee)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню