在返回部分视图之前修改视图

时间:2017-03-24 12:07:57

标签: c# asp.net-mvc partial-views

我是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)
            }

2 个答案:

答案 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 )
    }