繁体   English   中英

在部分视图razor mvc中设置文本框的值

[英]set value for a textbox in partial view razor mvc

我有以下场景:

我的索引页面使用的布局中包含部分视图。 局部视图包含搜索文本框。

对于特定场景,我需要使用我的viewdata []为索引页面设置搜索框的文本。

是不是在某种程度上poosiblein mvc3,asp.net 2010在视图页面的局部视图中设置文本框的值?

您可以将部分强类型设置为某个视图模型:

@model SearchViewModel
@using (Html.BeginForm())
{
    @Html.LabelFor(x => x.Keywords)
    @Html.EditorFor(x => x.Keywords)
    <button type="submit">OK</button>
}

然后在插入部分时,您可以传递此视图模型:

@Html.Partial("_Search", new SearchViewModel { Keywords = "some initial value" })

或者甚至更好的主视图的视图模型已经具有SearchViewModel类型的属性,您将能够像这样调用部分:

@Html.Partial("_Search", Model.Search)

现在显然在您的Index操作中,您不再需要使用任何ViewData,但您可以直接使用强类型视图模型:

public ActionResult Index()
{
    var model = new MyViewModel
    {
        Search = new SearchViewModel
        {
            Keywords = "some initial value"
        }
    };
    return View(model);
}

您始终可以强制键入部分视图(即使模型只是一个字符串)并传递您需要的值。

public class MyModel
{
    public int ValueForView {get;set;}
    public string TextBoxValue {get;set;}
}

-Index.cshtml

@model MyModel

@{ Html.RenderPartial("PartialView", Model.TextBoxValue); }

-PartialView.cshtml

@model string

@Html.TextBoxFor(m => Model)

据我了解您的问题,部分视图位于您的布局中,您需要将数据输入其中。

在这种情况下,布局最后处理但是将数据传递给它,您的选项有些限制。 您可以使用ActinFilter或ViewData。 ViewData是最简单的,也是最混乱的,所以我不推荐它。

ActionFilters可以工作,但你可以通过简单地调用你的布局来处理你的部分:


 @Html.RenderAction("PartialViewAction", "PartialViewController")

除非我遗漏了一些东西,否则我不相信其他答案会解决这个问题,因为这是一个不同的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM