在我的控制器中,我有以下ViewBag,它具有下拉列表的硬编码值
public ActionResult Order(string id, string printRequest)
{
this.ViewBag.PartialReasons = new List<string>() {" ", "Insufficient stock", "Suspended", "Retired", "Ordered Incorrectly", "Unable to deliver" };
}
我想要做的是,一旦从下拉列表中选择“无法交付”值,然后出现警告POP并显示“HELLO EVERYONE”,那么用户应该能够点击并保存,我现有的保存功能onclick在下面,
简而言之,只想从控制器视图中读取一个值。
$('.pcss-save').click(function() {
if (CheckSerialNumbersForQuantity()) {
if (CheckReasons()) { //If Ordered incrrectly
$('#genericmodal').find(".pcss-submit-genericmodal").unbind("click");
$('#genericmodal').find(".modal-title").html("Confirmation");
$('#genericmodal').find(".modal-body").html("This order will be Cancelled");
$('#genericmodal').modal('show');
$('#genericmodal').find(".pcss-submit-genericmodal").click(function() {
$("#orderform").submit();
});
} else {
$("#orderform").submit();
}
}
});
答案 0 :(得分:0)
在您看来,您应该可以使用@ViewBag.PartialReasons
直接调用ViewBag,当Razor引擎呈现脚本时,它将使用@ViewBag.PartialReasons
中的这些值。
您可能想要做这样的事情。
$('#yourDropDownID').on('change', function(){
if(CheckReasons()){
var genericModal = $('#genericmodal'); //Avoids rescanning the dom.
genericModal.find(".pcss-submit-genericmodal").unbind("click");
genericModal.find(".modal-title").html("Confirmation");
genericModal.find(".modal-body").html("This order will be Cancelled");
genericModal.modal('show');
genericModal.find(".pcss-submit-genericmodal").click(function() {
$("#orderform").submit();
}
});
你的检查原因可能是这样的。这是一种开放的解释。
function CheckReasons(){
var myReason = @String.Join(ViewBag.PartialReasons.ToArray());
//loop and figure it out if your reason is selected and return true or false
}
这一切都是我的头脑,所以可能需要一些调整,但这应该让你开始你想要做的事情。
UPDATE 您无法在浏览器中访问ViewBag,因为它只存在于服务器端。您需要渲染一个脚本,使用ViewBag在服务器上完成您想要的任务。 Razor引擎将填写C#代码的输出。
答案 1 :(得分:0)
首先提出一些问题:
通常下拉是键值对。使用Razor视图,您可以使用:
@Html.DropDownList("reasonListID", new SelectList(ViewBag.PartialReasons, "reasonCode", "reasonName"))
这假设viewbag对象是具有两个属性reasonCode
和reasonName
的对象列表。
纯粹的字符串列表并不真正用于驱动逻辑,您希望将您的潜在价值编入代码,以便进行清晰易懂的比较。通过这种方式,您可以简单地查看reasonCode
,而无需编码将您的选择值与“代码中可能没有多少意义的长字符串”进行比较,例如这可能在你的CheckReasons()
函数中。
if CheckReasons() == "UD") {
showModal( "HELLO EVERYONE");
}
比
更容易if CheckReasons() == "Unable to deliver") {
showModal("HELLO EVERYONE");
}
就弹出模态而言,看起来你正在使用jquery,所以看一下这个回答的问题:MVC3 Razor and Modal popup