我是MVC的新手。我需要通过从Request.Form读取值来在页面上创建隐藏字段。我在cshtml页面上使用了以下代码。
@(new HtmlString("<input type='hidden' id='hdnLiveMatchItemID' value='" + HttpContext.Current.Request.Form["liveBlogMasterData[LiveMatchItemID]"] + "' />"))
@(new HtmlString("<input type='hidden' id='hdnMatchID' value='" + HttpContext.Current.Request.Form["liveBlogMasterData[MatchID]"] + "' />"))
@(new HtmlString("<input type='hidden' id='hdnMatchTagItemID' value='" + HttpContext.Current.Request.Form["liveBlogMasterData[MatchTagItemID]"] + "' />"))
@(new HtmlString("<input type='hidden' id='hdnLiveBlogEntryParentID' value='" + HttpContext.Current.Request.Form["liveBlogMasterData[LiveBlogEntryParentID]"] + "' />"))
但这看起来很难看,我相信必须有一种方法可以从服务器端做到这一点。但我的服务器端代码返回部分如下。
public PartialViewResult MyMethod()
{
return PartialView("somepath/somefile.cshtml");
}
请告诉我如何从服务器端执行此操作?可以在返回之前修改PartialViewResult
吗?
编辑:根据Vec **的建议。我使用下面的代码,但它给出了错误。
@model IEnumerable<LiveBlogMasterData>
@foreach(var masterData in Model)
{
@Html.HiddenFor(m => masterData)
}
答案 0 :(得分:0)
您也可以在Razor模板中执行以下操作:
<input type='hidden' id='hdnLiveMatchItemID' value='@HttpContext.Current.Request.Form["liveBlogMasterData[LiveMatchItemID]"]' />
<input type='hidden' id='hdnMatchID' value='@HttpContext.Current.Request.Form["liveBlogMasterData[MatchID]"]' />
等
另一种选择是将值分配给控制器中的ViewBag:
public PartialViewResult MyMethod()
{
ViewBag.LiveMatchId = HttpContext.Request.Form["liveBlogMasterData[LiveMatchItemID]"];
}
和视图:
<input type="hidden" id="hdnLiveMatchItemID" value="@ViewBag.LiveMatchId" />
答案 1 :(得分:0)
您可以将您的字段列表发送到此类视图
return PartialView("somepath/somefile.cshtml", list);
然后尝试在foreach
循环中使用,就像这样
@model ....Models.ListOfHiddenItems
@foreach (var x in model)
{
@Html.HiddenFor(x => x.field )
}