标签: partial-views

ASP.NET MVC - PartialView架构问题

这更像是一个架构师问题,而不是一个需要代码的问题.

我有一个页面,要求我显示特定项目的状态.让我们说,为了简洁起见,有两种状态,即开放和封闭.

当项目打开时,我想显示一个PartialView,向我展示一组细节.如果项目已关闭,我想显示具有不同细节的PartialView.

现在我知道我可以在aspx中进行检查并渲染一个或者另一个,但我正在尝试减少aspx代码中的决策点数量.我相信aspx中应该有最少的实际代码.

此外,还有两个以上的状态,因此"if"语句会堆积起来并变得混乱.

有人解决过这样的问题吗?

我应该创建一个Helper来做到这一点吗?我可以,而且我不确定如何做到这一点,在视图的ActionResult中处理这个?例如,我可以在动作结果中渲染PartialViews并将其作为普通视图的一部分返回吗?

architecture asp.net-mvc partial-views

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

如何在ASP.NET MVC中将参数传递给部分视图?

在详细信息视图中,我想显示其他表格中的网格.如何更好地实施?我试图以这种方式做到这一点(错误:不能隐式地将类型'void'转换为'object'):

<%= Html.RenderPartial("~/Views/Appartament/Index.ascx", new { id  = Model.blockhouse_id })%>
Run Code Online (Sandbox Code Playgroud)

以下是详细信息视图中的代码:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<testMVC.Models.Blockhouse>" %>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    <h2>Details</h2>

        <p>
            blockhouse_id:
            <%= Html.Encode(Model.blockhouse_id) %>
        </p>
        <p>
            name:
            <%= Html.Encode(Model.name) %>
        </p>    

         <p>
            Appartaments:
            <%= Html.RenderPartial("~/Views/Appartament/Index.ascx", new { id  = Model.blockhouse_id })%>
        </p>       

</asp:Content>
Run Code Online (Sandbox Code Playgroud)

和Index.ascx控制器的代码:

public ActionResult Index(int blockhouse_id)
        {
            var _appartament = apt.GetBlockAppartaments(blockhouse_id).ToList();
            return View("Index", _appartament);
        }
Run Code Online (Sandbox Code Playgroud)

asp.net parameters asp.net-mvc partial-views

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

动态渲染局部视图

我还有一个问题.我有一个包含"添加"链接的视图.每次按下此链接时,都应动态添加部分视图(例如使用jQuery).

我试图通过这种方式做到这一点:

 $('#Div1').load('<%= Url.Action( "Video", "ddd", new { id = "1", url="ko" } ) %>');
Run Code Online (Sandbox Code Playgroud)

但是这种方法不添加部分它只是部分替换 "Div1"的内容.

当我尝试:

$('#Div1').append('<%= Url.Action( "Video", "ddd", new { id = "1", url="ko" } ) %>');
Run Code Online (Sandbox Code Playgroud)

有一些东西添加到我的Div但没有局部视图.只添加局部视图的路径:/de/Market/ddd/Video/1?url=ko

我在控制器中的代码如下所示:

public ActionResult Video(string url, int id)
        {
            ViewModels.Video v = new Video();
            v.URL = url;
            v.ID_Video = id;
            return PartialView("Video", v);

        }
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决这个问题?(我正在使用MVC2)

javascript jquery partial-views asp.net-mvc-2

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

如何使用ASP.NET MVC控制器动作的jQuery get方法?

我想使用部分视图的jQuery get方法.最好的方法是什么?我读到了jQuery get,对我来说最简单的方法是这段代码:

$.get(@Url.Action('Controller', 'Action'), function () { });
Run Code Online (Sandbox Code Playgroud)

ajax jquery partial-views asp.net-mvc-3

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

我可以使用两种模型的局部视图吗?

我正在尝试制作一个部分视图,其作用如下:

  • 当用户未登录时,显示注册表单.

  • 用户登录后,向我显示用户信息.

我有一个部分视图,既可以作为注册表单,也可以作为用户信息卡; 取决于用户是否已登录.

由于这个局部视图必须在网站的任何地方都可见,所以我在MVC3应用程序的_layout区域写了它:

<body>
    <div id="wrapper">

        <div id="top">
            <p id="onlinecount">7890 Personas Jugando</p>
            <p id="logoncontrol">ENTRAR | REGISTRARSE</p>
        </div>

        <div id="headercontainer">
            <img src="../../Content/Images/topheadertemp.png" />
        </div>

        <div id="middle">
            <div id="playerinformation">
                @Html.Partial("_RegisterPartial") <!-- HERE! -->
            </div>            

            <div id="centerad">
                <img src="../../Content/Images/premio.png" />
            </div>

            <div id="rightad">
                <img src="../../Content/Images/ganadores.png" />
            </div>

            <div class="clear"></div>
        </div>

        <div id="bottom">@RenderBody()
        </div>

    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

基本上,如果用户没有登录,我需要在该部分中显示一个表单.但是,如果他登录(通过cookie或其他),我应该加载他的信息模型,以显示他的帐户的数据.

这就是我被困的地方.我不知道如何为此用法加载模型.由于这是在_layout中,如果我是正确的,没有控制器对它起作用,不是吗?

有什么建议?

model partial-views asp.net-mvc-3

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

MVC3部分视图

还在学习MVC3,EF.目前我正在连接到MySql,但我认为这不相关.为简单起见,我决定为我的测试应用程序使用一个数据库,并且我已经包含了一个区分数据的类别.例如,我有新闻,事件,信息和页面类别.现在,当在视图中列出内容时,例如在主页上,我想列出最新的5个新闻项目(新闻类别),最新的5个事件(事件类别),欢迎文本(信息类别).我已经能够创建partialViews列出这些在主页的不同部分.但我觉得这样做是错误的,因为在每个PartialViews中,我一遍又一遍地查询同一个表,只是where cat=....在LINQ查询中进行过滤.您能否确认这是否应该是实践,或者有更好的方法来做到这一点.

c# partial-views asp.net-mvc-3

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

如何从不同的模型/控制器渲染局部视图?

我有以下部分视图,名为_Categories驻留在〜/ Views/Category/_Categories中:

@model IEnumerable<MyBlogSite.Models.BlogPostCategory>

<ul>
@foreach (var item in Model)
{
    <li>@Html.DisplayFor(modelItem => item.Name)</li>
}
</ul>
Run Code Online (Sandbox Code Playgroud)

我在〜/ Views/Blog/Index.cshtml上有以下索引视图:

@model IEnumerable<MyBlogSite.Models.BlogPost>

@{
   ViewBag.Title = "Index";
 }

@Html.RenderPartial("~/Views/Category/_Categories.cshtml", ---- );

<p>
   @Html.ActionLink("New Blog Post", "Create")
</p>
<table>
<tr>
    <th>
        @Html.DisplayNameFor(model => model.Title)
    </th>       
    ...
Run Code Online (Sandbox Code Playgroud)

在破折号(----)的空间中,我一直试图弄清楚如何传递模型.我不能使用Model.BlogPostCategory,因为它只接受Model.BlogPost.根据我在这里看到的一些帖子,我也尝试过使用小写"m"的"模型".

partial-views asp.net-mvc-4

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

仅在CKEditor初始化后运行JavaScript函数

我在ASP.NET MVC应用程序中工作.该应用程序有一个表单,通过@Ajax.ActionLink这个表单引入,这个表单有一个textarea,我绑定CkEditor.

我有一些特定的要求,包括抓住用户在CKEditor中键入的内容,并按下按钮传递到某个地方.

所以我目前正在做的是将onChange事件绑定到CKEditor,假设我在CKEditor textarea中更改了某些内容,这可以正常工作.

但是,如果用户获取表单,不更改任何内容,然后按下按钮以获取内容该怎么办.它不会起作用,因为我的代码只会在某些内容发生变化后抓取.所以我的问题是,我该如何运行以下内容:

/*
* As the user types the email body insert, this function updates the
* value on the hidden input field on [ form#EmailPreviewForm ] above.
*/
var data = CKEDITOR.instances.emailBody.getData();
$('#emailBodyInsert').val(data);
Run Code Online (Sandbox Code Playgroud)

只有在该CKEditor的完成初始化,否则我得到一个错误说undefinedemailBody; 这是有道理的,因为此时CKEditor尚未初始化.

javascript partial-views ckeditor asp.net-mvc-4

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

如何将视图和部分视图返回到ASP.NET MVC 4中的索引布局?

我的家庭控制器和我的"StatusController"都创建了一个DBEntities的新实例.Home Controller将_db.VMs ViewData.Model返回到_Layout.cshtml视图,状态控制器将_db.Jobs ViewDataModel作为局部视图返回到_GetForStatus.cshtml视图.我将VMs ViewData模型称为_Layout视图,如下所示:

 @foreach (var m in ViewData.Model)
      {
           <li><a href="#">@m.Name</a></li>
      }
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,使用DB中的VM名称填充下拉列表._GetforStatus.用于此的Home Controller部分是这样编写的:

 public ActionResult index()
      {
           _db = new IntegrationDBEntitires();
           ViewData.Model = _db.VMs.ToList();
           return View();
      }
Run Code Online (Sandbox Code Playgroud)

StatusController的编写方式如下:

 public PartialViewResult _GetforStatus()
      {
           _db = new OntegrationDBEntities();
           ViewData.Model = _db.Jobs.ToList();
           return PartialView();
      }
Run Code Online (Sandbox Code Playgroud)

_GetforStatus视图的编写方式如下:

 @model IntegrationWeb.Models.Job
      <div class="progress progress-striped active">
           <div class="progress-bar" style="width: @((Model.IS_Progress / Model.IS_Total)*100)%"></div>
      </div>
 @Html.Action("_GetforStatus", "StatusController")
Run Code Online (Sandbox Code Playgroud)

这在_Layout视图中调用如下:\

 @Html.Partial("~/Views/_GetforStatus.cshtml")
Run Code Online (Sandbox Code Playgroud)

我在这里收到错误."传递到字典中的模型项的类型为'System.Collections.Generic.List'1 [IntegrationWeb.models.VM]',但字典需要模型项类型'IntegrationWeb.Models.Job'.看起来好像有将两个不同的DBEntities拉入布局视图是一个冲突.
如何将视图和部分视图返回到ASP.NET MVC 4中的索引布局?

更新:我只是将Action放在Home Controller中,因为我无法弄清楚为什么它找不到我的Controller"StatusController".现在我使用@ {Html.RenderAction("_ GetforStatus")得到了一个不同的错误;}"传入字典的模型项是'System.Collections.Generic.List'1 [IntegrationWeb.models.Job]',但是这个字典需要一个'IntegrationWeb.models.Job'类型的模型项." 有谁知道这里发生了什么?

c# partial-views razor asp.net-mvc-4 entity-framework-6

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

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

这是我称局部视图的布局。
这是我出错的代码。

CS0144无法创建抽象类或接口“ IEnumerable”的实例

<div class="fa fa-group">
  @Html.Partial("_Comment", new IEnumerable<OnlineTaxiReservationSystem.Models.Comment>)
</div>
Run Code Online (Sandbox Code Playgroud)

这是我的部分观点。

@model IEnumerable<OnlineTaxiReservationSystem.Models.Comment>

<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
    <th>
        @Html.DisplayNameFor(model => model.UserComments)
    </th>
    @*<th>
        @Html.DisplayNameFor(model => model.UserId)
    </th>*@
    <th></th>
</tr>

@foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.UserComments)
    </td>
    @*<td>
        @Html.DisplayFor(modelItem => item.UserId)
    </td>*@
    <td>
        @Html.ActionLink("Edit", "Edit", new { id=item.CommentId }) |
        @Html.ActionLink("Details", "Details", new { id=item.CommentId }) |
        @Html.ActionLink("Delete", "Delete", new { id=item.CommentId })
    </td>
</tr>
}
</table>
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc partial-views asp.net-mvc-5

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