【发布时间】:2016-03-15 11:55:15
【问题描述】:
已解决:必须从部分中删除布局。
我有以下输入:
@Html.Hidden("VendorId", (string)ViewBag.VendorId)
它不会呈现来自ViewBag 的值,因此,在尝试了我在这种情况下所知道的一切之后(即使使用 html 而不是 razor,该值仍然为空),我认为是时候尝试用jQuery 解决这个问题,但事情变得越来越奇怪。以下不起作用:
$("#VendorId").val(id);
$("#VendorId : input").val(id);
但即使 jquery 至少有一个语法错误,这也有效:
$("#VendorId : input").val() = id;
$("VendorId : input").val() = id;
所以,我的问题是,是我自己还是这真的错了?如果它是错误的,任何人都可以想到发生这种情况的任何原因吗?我猜测 razor 和 jquery 的行为以某种方式连接但无法弄清楚,所以我需要一些帮助。很确定这是显而易见的。
我正在使用jQuery 1.10.2
这是我为ViewBag设置值的地方:
public async Task<PartialViewResult> SelectvendorList(string VendorId)
{
ViewBag.VendorName = await _vendorService.GetVendorName(VendorId);
if (VendorId == null) VendorId = "";
ViewBag.VendorId = VendorId;
var lists = await _vendorListService.GetAllForSelectList(User.Identity.GetUserId(), VendorId);
IEnumerable<SelectListItem> vendorLists = lists.Select(b => new SelectListItem { Value = b.Id, Text = b.Description });
ViewBag.vendorLists = vendorLists;
return PartialView();
}
我也有这一段,它正确地呈现了价值:
<p id="hiddenVendorId" style="display:none">@vendorId</p>
这是整个视图:
@{
ViewBag.Title = "SelectvendorList";
Layout = "~/Views/Shared/_Purchasing.cshtml";
var vendorId = ViewBag.VendorId;
}
<p>New Order / Select vendor list</p>
<h4>Vendor : @ViewBag.VendorName</h4>
<p id="hiddenVendorId" style="display:none">@ViewBag.VendorId</p>
@using (Html.BeginForm("AddRemoveItems", "Order", FormMethod.Get))
{
@Html.Hidden("VendorId", (string)ViewBag.VendorId)
<div class="form-group flex">
@Html.Label("VendorListID", "Vendor Lists", htmlAttributes: new { @class = "control-label" })
<div class="">
@Html.DropDownList("VendorListID", (IEnumerable<SelectListItem>)ViewBag.vendorLists, "", htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessage("VendorListID", "", new { @class = "text-danger" })
</div>
</div>
<input type="submit" value="Next" />
<input type="button" id="backButton" onclick="javascript:history.go(-1)" value="Back" />
@Html.ActionLink("Continue with no Vendor List", "AddRemoveItems", new { VendorId = vendorId, VendorListID = "" })
}
【问题讨论】:
-
你确定在你的控制器方法中设置
ViewBag.SomeValue吗? -
@Html.Hidden("VendorId", (string)ViewBag.SomeValue)将使用value="xxx"生成隐藏输入,其中ViewBag.SomeValue = "xxx"您不需要任何脚本。 -
“不想为简单的字符串设置模型” - 看看你节省的所有时间!
-
@Spluf - 有没有可能我们在这里没有看到正确的控制器?您返回的是部分视图,如果我没记错的话 - 您发布的视图不是部分视图。
-
很高兴我能提供帮助 - 不幸的是,我无法将其发布为答案,因为我真的无法解释为什么会发生这种情况。再次,很高兴我们帮助您完成了它。
标签: jquery asp.net asp.net-mvc razor