标签: partial-views

在两个不同的强类型视图中渲染一个局部视图

我有一个强类型的Person视图,我想渲染一个部分:

人物视图(强类型为人物)

<label for="name">Name</label>
    <% Html.RenderPartial("AddressForm"); %>
</label>
Run Code Online (Sandbox Code Playgroud)

AddressForm View(无类型,因为我也想在分发器强类型视图中使用它)

当我尝试从Person视图中调用此partial时,我收到此错误:

编译器错误消息:CS1963:表达式树可能不包含动态操作

来源错误:

Line 8:    </div>  
Line 9:    <div class="editor-field">  
Line 10:       <%= Html.TextBoxFor(model => model.addressLine1) %>  
Line 11:       <%: Html.ValidationMessageFor(model => model.addressLine1) %>  
Line 12:   </div> 
Run Code Online (Sandbox Code Playgroud)

如何让这部分渲染,以便我可以在多个其他类型中使用我的部分addressView?

编辑:

// GET: /Person/Create  

public ActionResult Create()  
{
    Person person = new Person();       
    return View(person);  
}  

//Person create view  
<% Html.RenderPartial("AddressForm"); %>

//AddressForm Partial
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>

<fieldset>  
    <legend>Address</legend>   
    <div class="editor-label">  
        <label for="addressLine1" class="addressLabel">Address Line 1</label>  
    </div>  
    <div class="editor-field">  
        <%= …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc views partial-views strongly-typed-view

5
推荐指数
1
解决办法
3028
查看次数

mvc局部视图帖子

我有一个公司对象,它有一个分支对象列表,

我的公司视图(驻留在公司目录中)中有一个强类型的分支列表视图(位于分支目录中),

分支视图中的每个分支都有一个删除按钮,我想将其发布到分支控制器中的删除操作.

目前,调用的删除操作是公司控制器中的操作

(公司和分公司都有删除操作)

我相信我理解它正在做的事情,但在这种情况下最好的做法是什么......

  1. 分支列表部分视图应该驻留在公司或分支目录中吗?
  2. 删除分支操作应该驻留在公司还是分支控制器中?

我认为分支列表应该在分支目录中并调用分支控制器,但是当部分视图加载到公司详细信息视图中时,如何让它执行此操作?

希望有道理,

谢谢,

标记

        <% foreach (var item in Model) { %>

    <tr>
        <td>
                    <form action="Edit" method="get">
            <input type="submit" value="Edit" id="Submit1" /> 
            <input type="hidden" name="id" value="<%= item.Id %>" /> 
        </form>
        |
        <form action="Branch" method="get">
            <input type="submit" value="Details" id="Submit2" /> 
            <input type="hidden" name="id" value="<%= item.Id %>" /> 
        </form>
        |
        <form action="BranchDelete" method="post">
            <input type="submit" value="BranchDelete" id="Submit1" /> 
            <input type="hidden" name="id" value="<%= item.Id %>" /> 
        </form>
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc partial-views

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

为什么我在MVC3控制器内的模型中更新的值未在客户端上呈现?

我有一个控制器动作UpdateCustomer(CustomerDto customer),返回PartialViewResult一个模型,该模型也是CustomerDto:

[HttpPost]
public PartialViewResult UpdateCustomer(CustomerDto customer)
{
    CustomerDto updatedCustomer = _customerService.UpdateCustomer(customer);
    updatedCustomer.Name = "NotThePostedName";
    return PartialView("CustomerData", updatedCustomer);
}
Run Code Online (Sandbox Code Playgroud)

在我看来,我有以下几行:

@Html.TextBoxFor(model => model.Name)
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.在我看来,我对这个动作方法进行了异步发布,模型绑定器完成了它的工作,我可以更新数据库中的客户.然后我想将更新的客户呈现给客户.例如,我想更改控制器中的客户名称.但是,渲染的内容始终是已发布customer的属性,而不是来自的属性updatedCustomer.

我决定在我的项目中包含MVC3源代码,看看到底发生了什么.它似乎是MVC3的一个特征(错误?),它总是取值ViewData.ModelState而不是来自的值ViewData.Model.

这发生在第366-367行System.Web.Mvc.Html.InputExtensions:

string attemptedValue =
    (string) htmlHelper.GetModelStateValue(fullName, typeof(string));
tagBuilder.MergeAttribute("value",
    attemptedValue ?? ((useViewData)
        ? htmlHelper.EvalString(fullName)
        : valueParameter), isExplicitValue);
Run Code Online (Sandbox Code Playgroud)

如你所见,attemptedValue来自ModelState.它包含旧值CustomerDto.Name((发布到控制器操作的值).

如果这是一个功能,为什么这样做?有没有办法解决它?我希望如果我更新我的模型,会更新更新,而不是我发布的旧值.

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

5
推荐指数
1
解决办法
2626
查看次数

局部视图中不同型号的问题

我有一个(剃刀)页面,包含5个不同的部分视图.每个局部视图负责来自数据库的一些数据.在该母版页中,我使用一个模型对象,但对于部分视图,我使用不同的模型对象.问题是,当我在局部视图中设置模型对象时,我的应用程序会出现以下错误:传递到字典中的模型项是类型'MyProject.WebUI.Models.BigPageViewModel', but this dictionary requires a model item of type 'MyProject.WebUI.Models.StatisticsViewModel'.

这是代码:这是包含部分视图的大页面:

@model MyProject.WebUI.Models.BigPageViewModel
@{
    Layout = "../Shared/_BigPage.cshtml";
}
...
@{Html.RenderPartial("../Data/StatisticsFeed");}
...
Run Code Online (Sandbox Code Playgroud)

这是控制器代码.对于这个方法,我创建了应该在大页面中呈现的局部视图.

public ActionResult StatisticsFeed()
        {
            StatisticsViewModel cs = new StatisticsViewModel();
            cs.TotalData = (new StatisticsRepository()).GetStatisticCompleteData(1);
            return View(cs);
        }
Run Code Online (Sandbox Code Playgroud)

这是部分视图中的代码:

@model MyProject.WebUI.Models.StatisticsViewModel
...
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我使用'RenderAction'方法而不是'RenderPartial'并返回值,但返回两个结果一个数据,一个没有,这一定是一些愚蠢的错误......

public ActionResult StatisticsFeed()
        {
          StatisticsViewModel cs = new StatisticsViewModel();
                cs.TotalData = (new StatisticsRepository()).GetStatisticCompleteData(1);

            cs.TotalCitizns = 569;
            return View(cs);
        }
Run Code Online (Sandbox Code Playgroud)

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

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

ASP.NET MVC 4局部视图不起作用

我写了一个像这样的局部方法:

public ActionResult _StatePartial()
        {
            ViewBag.MyData = new string[] { "110", "24500" };
            return View();
        }
Run Code Online (Sandbox Code Playgroud)

_StatePartial_Layout页面中渲染视图:

@Html.Partial("_StatePartial")
Run Code Online (Sandbox Code Playgroud)

这是我的部分视图代码:

@{
    string[] Data = (string[])ViewBag.MyData;
}
<div id="UserState">
        Reputation: @Html.ActionLink(Data[0], "Reputation", "Profile") | 
        Cash: @Html.ActionLink(Data[1], "Index", "FinancialAccount")
</div>
Run Code Online (Sandbox Code Playgroud)

但是当我运行这个项目时,_ StatePartial方法不会调用并且ViewBag始终为null.

Server Error in '/' Application.
Object reference not set to an instance of an object. 
Run Code Online (Sandbox Code Playgroud)

请注意,这些参数不是我的模型字段,而是通过调用Web服务方法进行计算.但我不断在我的问题中设定这些价值.

我能为此做些什么?是否有将参数传递给局部视图的想法?谢谢.

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

5
推荐指数
1
解决办法
9397
查看次数

PHP Mustache 2.1部分加载不基于文件名

有没有办法根据文件名值数组加载部分?

目前,如果我写这个,{{> sidebar}}它会寻找views/sidebar.mustache.(基于模板加载器类,我可以在其中指定查找模板的位置)

理想情况下,我希望这{{> sidebar}}是一个变量名称而不是文件名.

我想要实现的是,如果我传递给加载器,则查找不基于文件名的侧边栏部分:

$partials = array(
    'sidebar' => 'folder1/somefile'
);
Run Code Online (Sandbox Code Playgroud)

这将转化为:views/folder1/somefile.mustache.

php partial-views mustache

5
推荐指数
1
解决办法
1654
查看次数

Rails:点击时在div中渲染部分

我正在构建一个Web应用程序,它具有分为两侧的UI,一个菜单栏和一个内容区域.菜单栏列出了用户编写的所有博客的标题.单击标题时,内容区域应更改为显示该博客的帖子.

1.)所以在我的菜单栏上,我有:

<%= link_to blog.title, blog, :remote=>true %>
Run Code Online (Sandbox Code Playgroud)

在我的内容领域,我有:

<div id="contenthere"></div>
Run Code Online (Sandbox Code Playgroud)

2.)因此,根据我的理解,这应该触发博客控制器的show方法.在那里,我在方法中有以下内容:

@blog = Blog.find(params[:id])

respond_to do |format|
   format.js { render :show_blog }
end
Run Code Online (Sandbox Code Playgroud)

3.)哪个应该在views/blogs文件夹中查找名为show_blog.js.erb的文件:

$("#contenthere").html("<%=escape_javascript(render :partial=>"show_blog")%>");
Run Code Online (Sandbox Code Playgroud)

这将使我的div与commenthere id一起使用_show_blog.html.erb部分(位于博客视图文件夹中),其blog参数等于我的博客控制器中设置的@blog参数.

4.)所以我的show blog partial有这段代码:

<%=@blog.title %>
<%=@blog.user_id %> 
Run Code Online (Sandbox Code Playgroud)

编辑:实际上,我搜索并发现我不能在assets文件夹中使用'render'方法 - 我在哪里放js.erb呢?我已将其移至博客视图文件夹,主视图文件夹(index.html.erb),只是/ view /文件夹...错误消失,但链接无法正常工作...

编辑:将show_blog.js.erb放在我的views/blogs文件夹中,因为它是调用它的博客控制器.单击链接时没有任何事情发生,控制台中没有显示JS错误.js被调用了吗?

编辑:更改以反映我的最终答案.

ruby-on-rails partial-views

5
推荐指数
1
解决办法
6779
查看次数

如何在Ember中创建局部?

我不能简单地说.我只想逐步了解如何在ember.js中创建一个部分把手.我无法在任何地方找到合适的人!

  • 部分地方应该保存在哪里?
  • 如何将参数传递给部分?
  • 我的文件名开头是否需要下划线?
  • 我如何注册部分?
  • 渲染部分的正确方法是什么,{{> partialname}}和之间有什么区别{{partial partialname}}

如果你downvote至少发布一个链接到适当的指南

javascript partial-views handlebars.js ember.js

5
推荐指数
1
解决办法
1845
查看次数

浏览器后退按钮不会填充MVC应用程序中的下拉列表值

我有一个使用c#在MVC5中构建的应用程序.我的观点有5个下拉菜单.

这些下拉列表是偏见.下拉内容: -

1)城市名单

2)事件列表.

3)场地清单

4)日期列表

5)时间列表

因此,当首次加载页面时,将填充城市.当我选择一个城市时,第二个下拉列表中会填充事件列表.现在,当我选择一个事件时,下一个下拉列表将填充场地.并且对于所有下拉列表都会发生相同的过程.(当然,因为它是最后一次的下拉时间没有变化事件).

现在有一个提交按钮,当我单击此按钮时,它使用控制器方法将我重定向到新页面.签名如下

public ActionResult Redirect(string hdn_city, string hdn_event, string hdn_date, string hdn_venue, string hdn_time)  
{
    string urls = String.Format("mysite.com?cid={0}&eid={1}&did={2}&vid={3}&tid={4}", hdn_city, hdn_event, hdn_date,hdn_venue,hdn_time);             
    return Redirect(urls);
}
Run Code Online (Sandbox Code Playgroud)

现在,当我提交此表单时,我被重定向到mysite.com,并在查询字符串中传递了所有参数.

现在我的问题是,如果在到达mysite.com后我按下浏览器后退按钮,下拉列表的值应该保持不变.我不必再重复整个过程.请建议我可能的替代方案.

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

5
推荐指数
1
解决办法
834
查看次数

布局和不同的内容和样式,复杂的MVC4应用程序

我观看教程很多的,移动web-forms.masterVS MVC总体布局.

我的问题是关于嵌入式全局文件与单个页面自己的文件.

(files =样式和脚本)

在我的视图中的旁注我已经实现了一个小命名约定/规则,以便layouts-masters有一个LOpostfix,所以如果我的应用程序名为"SAdmin",那么我的布局(master)-chtml将命名为:_SAdminLO.cshtml

在我的布局大师我有:

(为简单起见)只是一个主栏 - 链接(这样所有页面都有"链接"顶栏)

这是主要的布局

   [textlink1] | [textlink2] | [textlink3] | [textlink4] ....
Run Code Online (Sandbox Code Playgroud)

然后我有索引页面(它的名字是cpanel)

在我的索引中cpanel.chtml我除了主要布局的文本栏之外还添加了图标...以图标菜单的形式复制顶栏

  [IMG]           [IMG]
  page_name     page_name

  [IMG]           [IMG]
  page_name     page_name
Run Code Online (Sandbox Code Playgroud)

所以一起Layout-master _SAdminLO.cshtml+ cpanel.chtml- 来自我的应用程序的"主页"

现在我的个人页面完全独立于他们的行动

但他们需要的是顶部栏的css + html,而不是cpanel(索引)

所以我的情况是:在rightclick-> view-source中,我可以看到我的所有页面都有双html标签 -

<html> + <head> + <body> markup of `LO`
Run Code Online (Sandbox Code Playgroud)

&

<html> + <head> + <body> markup of `individual.cshtml `
Run Code Online (Sandbox Code Playgroud)

文件 :

-主-

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc master-pages partial-views asp.net-mvc-4

5
推荐指数
1
解决办法
820
查看次数