标签: partial-views

从ASP.NET MVC中的部分视图中删除逻辑

我知道视图中不应该包含代码,但在我正在处理的项目中,我在视图中有很多逻辑.

我的主页有

<% Html.RenderPartial("SearchResults"); %>
Run Code Online (Sandbox Code Playgroud)

现在在局部视图中,我有很多这样的逻辑;

<div id="RestaurantsList">
<%if (Model.restaurantsList.Count() > 0)
{
    foreach (var item in Model.restaurantsList)
    { %>
        <% Html.RenderPartial("SearchResult", item); %>

    <%
    } %>
<%
}
else
{
    Html.RenderPartial("NoResults");

} %>
Run Code Online (Sandbox Code Playgroud)

现在我可以让家庭控制器返回一个基于列表为空的不同视图,但我真的不想这样,因为索引视图有一些我想要显示的东西,无论是否有结果.

我能想到的另一件事就是将它封装在一个辅助方法中,比如Html.SearchResults.但是我需要帮助器来为每个搜索结果调用renderPartial.这似乎不是关心的干净分离.

我仍然需要在局部视图中使用第一个if语句.

你最好怎么处理这个?

asp.net-mvc refactoring partial-views

7
推荐指数
2
解决办法
1191
查看次数

ruby on rails逻辑中的部分布局

我有一个侧边栏,里面会有一些逻辑,类似于视图与控制器的对话方式.我在哪里把逻辑放入部分?我是否为布局创建了一个新控制器并将其放入其中?

该布局适用于登录用户,如仪表板.仪表板将有一个侧边栏,在每个页面上显示相同的动态内容.由于它显示在每个页面上,我想把它放在一个部分.

我只是把发现和所有信息放在哪里感到困惑.

layout ruby-on-rails partial-views

7
推荐指数
1
解决办法
2237
查看次数

部分视图继承自主布局

我有一个局部视图和int it,没有任何布局的任何继承的痕迹.但是每当我想在视图中使用它(渲染它)时,布局会为视图重复一次,而对于局部视图则重复一次.这篇文章建议创建一个空的布局.但我认为这是解决方法.无论如何都要停止为部分视图加载布局(主布局).我不明白,为什么当没有代码使用主布局时,为什么要加载它.这就像在ASP.NET中创建一个页面,并看到它从没有<%@ Master ...指令的母版页继承.

这是我的部分观点:

@* Recursive category rendering *@
@using Backend.Models;

@{
    List<Category> categories = new ThoughtResultsEntities().Categories.ToList();
    int level = 1;
 }

 @RenderCategoriesDropDown(categories, level)

 @helper RenderCategoriesDropDown(List<Category> categories, int level)
 {
     List<Category> rootCategories = categories.Where(c => c.ParentId == null).ToList();
     <select id='categoriesList' name='categoriesList'>
     @foreach (Category rootCategory in rootCategories)
     {
         <option value='@rootCategory.Id' class='level-1'>@rootCategory.Title</option>
         @RenderChildCategories(categories, level, rootCategory.Id);
     }
     </select>
 }

 @helper RenderChildCategories(List<Category> categories, int level, int  parentCategoryId)
 {
     string padding = string.Empty;
     level++;
     List<Category> childCategories = categories.Where(c => c.ParentId …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc layout master-pages partial-views asp.net-mvc-3

7
推荐指数
2
解决办法
2万
查看次数

用于局部视图的ASP.NET MVC 3控制器操作

我是MVC的新手,我不明白如何正确使用部分视图.我正在尝试在我的MVC应用程序中显示来自博客站点的RSS源.我正在使用Razor,我有以下结构:

Controllers/HomeController.cs
Controllers/RssController.cs

Views/Home/Index.cshtml

Shared/_Layout.cshtml
Shared/_Rss.cshtml
Run Code Online (Sandbox Code Playgroud)

HomeController的:

 namespace MvcApp.Controllers
    {
        public class HomeController : Controller
        {
            public ActionResult Index()
            {
                ViewBag.Message = "Welcome to ASP.NET MVC!";

                return View();

            }

        }
    }
Run Code Online (Sandbox Code Playgroud)

RssController:

namespace MvcApp.Controllers
{
    public class RSSFeedController : Controller
    {

        public ActionResult RssFeed()
        {
            string strFeed = "http://foo.wordpress.com/category/foo/feed/";

            using (XmlReader reader = XmlReader.Create(strFeed))
            {
                SyndicationFeed rssData = SyndicationFeed.Load(reader);

                return View(rssData);
            }
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

_Rss.cshtml:

@using System.ServiceModel.Syndication;
@using System.Text;
@using System.Xml.Linq;

<h2>RSSFeed</h2>
@foreach (var item in ViewData.Model.Items) 
{ 
string …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc partial-views

7
推荐指数
2
解决办法
2万
查看次数

具有多个强类型部分视图的MVC 3剃刀形式的帖子没有绑定

我很好奇在一个回复到包含部分View的表单中使用多个强类型部分的方法是否是正确的MVC处理方法.为简洁起见,主视图与以下模型绑定,其中包含其他几个属性和数据注释:

public class AccountSetup : ViewModelBase
{
    public bool TermsAccepted { get; set; }
    public UserLogin UserLogin { get; set; }
    public SecurityQuestions SecurityQuestions { get; set; }
}

public class UserLogin
{
    public string LoginId { get; set; }
    public string Password { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

主Register.cshtml视图的标记并不完全在下面,但这是部分在下面使用的方式:

@model Models.Account.AccountSetup

. . . <pretty markup> . . . 

@using (Html.BeginForm("Register", "Account", FormMethod.Post))
{ 
     . . . <other fields and pretty markup> . . . 

     @Html.Partial("_LoginAccount", Model.UserLogin)
     @Html.Partial("_SecurityQuestions", Model.SecurityQuestions)

     <input …
Run Code Online (Sandbox Code Playgroud)

partial-views razor asp.net-mvc-3

7
推荐指数
1
解决办法
3956
查看次数

Asp.Net MVC布局和部分视图

让我们考虑两个使用相同布局的视图:

  • 包含"body"的左列(两个视图的填充方式不同)
  • 右列显示一般信息(通过模型传递)

而不是两次定义正确的部分,我想知道我是否可以创建一个PartialView直接从布局页面链接.

问题是部分视图从正在呈现的视图中隐含地继承了它们的模型.由于每个视图都有自己的模型,因此我在局部视图中最终会出现模型类型不匹配的情况.

从这里我看到两个解决方案:

  • 我可以在ViewBag中插入视图模型的公共部分.不幸的是,这意味着使用此布局的每个视图都必须实现此"约定",但在编译时没有任何内容警告开发人员...
  • 我可以使用多态来使每个视图模型继承自部分视图使用的相同基类(编辑:或接口).这将在一定程度上起作用,但只要我在同一布局中有第二个局部视图,就可能以指数方式增加复杂性.

所以这里是问题:

  • 我是否正确上述假设?
  • 你还有其他可能吗?
  • 对此有何回报?

非常感谢,TB.

c# asp.net-mvc partial-views viewbag

7
推荐指数
1
解决办法
1万
查看次数

部分视图中的ASP.NET MVC自定义类型列表

我有一个视图,采用PaginatedList(如在Nerd Dinner样本中).该页面按预期工作.现在我添加了一个部分视图,它采用相同的PaginatedList,并在第一个视图中调用RnederPartial.ASP.NET抛出了一个我似乎无法解决的异常.

PaginatedList代码:

public class PaginatedList<T> : List<T>
{
    public int PageIndex { get; private set; }
    public int PageSize { get; private set; }
    public int TotalCount { get; private set; }
    public int TotalPages { get; private set; }

    public PaginatedList(IQueryable<T> source, int pageIndex, int pageSize)
    {
        PageIndex = pageIndex;
        PageSize = pageSize;
        TotalCount = source.Count();
        TotalPages = (int)Math.Ceiling(TotalCount / (double)PageSize);
        this.AddRange(source.Skip(PageIndex * PageSize).Take(PageSize));
    }

    public bool HasPreviousPage
    {
        get
        {
            return (PageIndex > 0);
        }
    }

    public …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc partial-views

6
推荐指数
1
解决办法
6110
查看次数

使用小胡子动态渲染部分模板

有没有办法动态注入部分模板(并在Ruby和Javascript中以相同的方式工作)?基本上,我正在尝试在列表中呈现不同类型的对象.

我能想到的最好的是:

<div class="items">
{{#items}}
<div class="item">
  {{#is_message}}
  {{> message}}
  {{/is_message}}

  {{#is_picture}}
  {{> picture}}
  {{/is_picture}}
</div>
{{/items}}
</div>
Run Code Online (Sandbox Code Playgroud)

我对这种方法并不十分兴奋.有没有更好的办法?

另请注意,视图的不同类型的模型可以具有不相似的字段.我想我总是可以去最低的公分母并且数据哈希包含html,但是我宁愿使用胡子模板.

javascript ruby templates partial-views

6
推荐指数
1
解决办法
4419
查看次数

ASP.Net MVC 3 EditorTemplate for DateTime字段错误

此代码是从本教程中的一些ASP.Net MVC 2代码转换而来的:
带有DateTime的MVC 2编辑器模板

它是存储为"EditorTemplates/DateTime.cshtml"的DateTime字段的自定义EditorTemplate.

@Model DateTime?
@Html.TextBox("", (Model.HasValue ? Model.Value.ToShortDateString() : string.Empty), new { @class = "datePicker" })
Run Code Online (Sandbox Code Playgroud)

但是,使用时出现以下错误@Html.EditorFor(model => model.NewAbsence.StartDate):

CS1973:'System.Web.Mvc.HtmlHelper'没有名为'TextBox'的适用方法,但似乎有一个名称的扩展方法.无法动态分派扩展方法.考虑转换动态参数或调用扩展方法而不使用扩展方法语法.

我在这里看过一些类似的帖子,提到了转换EditorFor方法的参数,但是我似乎无法在我的例子中使用它.

有人可以指出我需要在我的代码中更改.谢谢.

partial-views editortemplates razor asp.net-mvc-3

6
推荐指数
2
解决办法
1万
查看次数

htmlHelper与局部视图

我无法决定是否应该使用htmlHelper或部分视图来解决我的问题.

我想重用以下代码:

<div style="width: 500px; float: left;">
  <div class="box effect2">
    <span><a href="@Url.Action("someMethod", "somController")">
        <img src="@Url.Content("~someurl)" /></a></span>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

href和图像源将是参数.

最好的方法是什么?

html-helper partial-views asp.net-mvc-4

6
推荐指数
1
解决办法
2909
查看次数