我有一个强类型的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) 我有一个公司对象,它有一个分支对象列表,
我的公司视图(驻留在公司目录中)中有一个强类型的分支列表视图(位于分支目录中),
分支视图中的每个分支都有一个删除按钮,我想将其发布到分支控制器中的删除操作.
目前,调用的删除操作是公司控制器中的操作
(公司和分公司都有删除操作)
我相信我理解它正在做的事情,但在这种情况下最好的做法是什么......
我认为分支列表应该在分支目录中并调用分支控制器,但是当部分视图加载到公司详细信息视图中时,如何让它执行此操作?
希望有道理,
谢谢,
标记
<% 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) 我有一个控制器动作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((发布到控制器操作的值).
如果这是一个功能,为什么这样做?有没有办法解决它?我希望如果我更新我的模型,会更新更新,而不是我发布的旧值.
我有一个(剃刀)页面,包含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) 我写了一个像这样的局部方法:
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服务方法进行计算.但我不断在我的问题中设定这些价值.
我能为此做些什么?是否有将参数传递给局部视图的想法?谢谢.
有没有办法根据文件名值数组加载部分?
目前,如果我写这个,{{> sidebar}}它会寻找views/sidebar.mustache.(基于模板加载器类,我可以在其中指定查找模板的位置)
理想情况下,我希望这{{> sidebar}}是一个变量名称而不是文件名.
我想要实现的是,如果我传递给加载器,则查找不基于文件名的侧边栏部分:
$partials = array(
'sidebar' => 'folder1/somefile'
);
Run Code Online (Sandbox Code Playgroud)
这将转化为:views/folder1/somefile.mustache.
我正在构建一个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被调用了吗?
编辑:更改以反映我的最终答案.
我不能简单地说.我只想逐步了解如何在ember.js中创建一个部分把手.我无法在任何地方找到合适的人!
{{> partialname}}和之间有什么区别{{partial partialname}}如果你downvote至少发布一个链接到适当的指南
我有一个使用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后我按下浏览器后退按钮,下拉列表的值应该保持不变.我不必再重复整个过程.请建议我可能的替代方案.
我观看教程很多的,移动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) partial-views ×10
asp.net-mvc ×6
asp.net ×2
c# ×2
ember.js ×1
javascript ×1
master-pages ×1
mustache ×1
php ×1
razor ×1
views ×1