如何将倍数和选择性模型传递到MVC剃刀局部视图中?

勾选框

这是很基本的,但是成为获取MVC的绊脚石(当然来自Web Forms)!

如果a_Layout.cshtml有一个可选的侧边栏作为Partial View,您如何让Controller传递ViewModel给它(例如BlogPosts),而不必将其包含在Controller的所有Page / View调用中?

我很高兴看到Controllers是我们需要构造模型的地方(不在Views内部,Partial或其他视图中),并且任何Partial View都将从其父级继承模型(方便)。但是有时父页面有自己的页面ViewModel(例如SearchResults)-尽管我可以通过将侧边栏传递BlogPosts到每个视图中并仅添加该SearchResults页面的来扭转它,但是仍然遇到相同的问题-如何有选择地传递潜在的和多重的分为父视图和部分视图。

因此,我们可以将任何其他Model放入中ViewBag,然后将其放入任何Partials中,这也许是最好的解决方案,但看起来很混乱(并且不确定它们是否保持强类型)。还是使用额外的Partial View Controller的解决方案?在这种情况下,您如何执行此操作,因为在foreachin上获得了一个空对象_DefaultSideBar1.cshtml并且调试显示additional _DefaultSideBar1()根本没有运行(因此,不奇怪它的模型不会被注入):

当前示例路线HomeController.cs

[HttpGet]
    public ActionResult SearchResults(string searchText)
    {
        ViewBag.Title = "Search Results";
        List<WebResult> searchData = new List<WebResult>();
        // generate searchData etc...
        return View(searchData);
    }

当前SearchResults.cshtml(使用_Layout.cshtml):

  @model IEnumerable<Bing.WebResult>
    // ... etc etc....
    @section DefaultSidebar1
    {
        @Html.Partial("_DefaultSidebar1")
    }

侧栏的预期附加电流控制器将加载但不会在控制器中被覆盖,因此对象参考为空:

 [HttpGet]
    public ActionResult _DefaultSideBar1()
    {
        return View(db.BlogPosts.ToList());
    }

Current _DefaultSideBar1.cshtml

  @model IEnumerable<Proj.MVC.SPQ.DataEntities.BlogPost>
    <ul>
        @foreach (var item in Model)
        {
            <li>@Html.ActionLink(item.Title, "Details", new { id=item.ID })</li>
        }
    </ul>
安德烈

这个电话

@Html.Partial("_DefaultSidebar1")

使用指定的名称而不使用模型(或使用null模型)来呈现视图这就是为什么您获得空引用。如果要渲染它并提供一些模型,正确的调用方法是

@Html.Partial("_DefaultSidebar1", theModel)

当然,假设该模型在父视图中可用,很可能是父视图模型的一部分。

另一方面,如果您想通过执行某项操作的结果来呈现视图的一部分,则可以使用以下方法:

@Html.RenderAction("_DefaultSidebar1", "ControllerName")

当然ControllerName这里是可选的。这将调用您的_DefaultSidebar1动作,而不仅仅是查看,并呈现此动作产生的结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将HTML传递到剃刀局部视图?

如何将剃刀模型的属性传递给局部模型?

如何将模型传递到局部视图

MVC:如何将数组从模型传递到视图?

如何将IEnumerable模型传递给MVC中的局部视图

ASP.NET MVC 将动态 Json 数据传递到模型中以在局部视图中返回

如何将项目数据从 .net MVC WebGrid 传递到局部视图

如何将“ lnkclass”值从局部视图传递到mvc应用程序中的存储过程?

将动态模型传递到局部视图

如何将参数传递到局部视图

如何将ID从剃刀视图传递到ASP .Net MVC中控制器的操作方法?

如何在MVC剃刀视图中将值从jQuery脚本传递到ActionLink

如何将强类型模型和模型列表同时传递到视图

如何将剃刀视图中的字符串数组发回MVC控制器?

如何将Laravel变量传递到AngularJS视图中?

如何将模型从MVC视图传递到角度控制器?

在VB.Net MVC中,如何将列表传递到视图并使用模型显示它?

在MVC局部剃刀视图中未生成必需的属性(使用Edmx模型)

如何将剃刀视图绑定到带有对象列表的模型?

如何将自定义模型对象从剃刀视图传递到ASP.NET MVC 5中的控制器操作

Xamarin:如何将信息从提示传递到视图模型

如何将数据从多个模型传递到视图?

通过MVC中的Ajax将模型从局部视图传递到控制器

在局部剃刀视图中正确使用模型

如何将ViewModel属性作为模型传递给局部视图?

如何在剃刀页面中将模型传递给_Layout.cshtml 页面中的局部视图

使用模型自动属性时如何将数据从模型传递到视图模型?

将值从剃刀形式传递到模型

剃刀页面,如何将json序列化的字符串传递到模型属性中