【问题标题】:Viewbag in a DisplayTemplateDisplayTemplate 中的 Viewbag
【发布时间】:2013-12-18 16:02:57
【问题描述】:

如何将 ViewBag 传递/发送到我的 DisplayTemplates?我不能为此使用 ViewModel,所以我认为 ViewBags ...... 例如:

我的部分观点:

@Html.DisplayFor(model => model.Car)

Car.cshtml(显示模板):

<tr>
    <td>
        @Html.TextBoxFor(model => model.Name, new { Name = modelFieldInitialName + "Name", id = modelFieldInitialId + "Name" })
        @Html.ValidationMessageFor(model => model.Name)
    </td>
    <td>
        @Html.DropDownListFor(model => model.Brand, new SelectList(ViewBag.Brands, "Description", "Description"), "", new { Name = modelFieldInitialName + "Brand", id = modelFieldInitialId + "Brand" })
        @Html.ValidationMessageFor(model => model.Brand)
    </td>
</tr>

【问题讨论】:

    标签: html asp.net asp.net-mvc-4 razor viewbag


    【解决方案1】:

    ViewBag 在 View 中可用,无需您传入。如果您在 Controller 中向 ViewBag 添加内容,它将在 View 中可用。

    //Controller
    
    public ActionResult Test()
    {
       ViewBag.Message = "Hello World";
       return View();
    }
    
    //In The View
    
    @if(!string.IsNullOrEmpty(ViewBag.Message))
    {
      <p>ViewBag.Message</p>
    }
    

    【讨论】:

    • 这似乎适用于 DisplayTemplates,但不适用于通过用户操作附加到视图的 partialView。你知道怎么解决吗?
    • 这是因为局部视图正在异步加载到现有视图中。在那种情况下,我要么拥有 ViewModel 中的数据,要么使用 JQuery(或 JS)获取它。你在做什么你认为 ViewModel 无法处理的事情?
    • 我在这里创建一个动态表,当用户想要创建一个新表行时,它会附加一个特定的局部视图(所以我不能为此使用 viewModel),以及我是如何拥有的调用 wcf 服务来填充一些下拉列表我不想每次创建新的局部视图时都调用该服务
    • 不能用 JavaScript 存储 WCF 服务结果吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多