Таким образом, в основном у меня есть 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;
}
}
Если все, что вам нужно сделать, это проверить значение логического, это просто условное утверждение:
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, чтобы добавить его в качестве явного параметра для действия контроллера.
Разверните действие вашего контроллера новым параметром:
public JsonResult ResolveProfileSelectionRequired(ResolveProfileSelectionRequiredModel model, bool newtransferee = false)
и проверьте его внутри действия.
Вы можете использовать:
if (Request.Form["newtransferee"].ToLower() == "true")
или он работает, если вы пишете это вместо руководства html?
@Html.HiddenFor(model => model.NewTransferee)
if
, нет необходимости вelse
)