任何人都可以确认在ASP.NET MVC中的部分视图的最佳位置? 我的想法是,如果它是一个全球性的观点,这将是在很多地方,然后共享使用。 如果它的一部分视图已经被包装到一个局部视图中以使代码阅读更容易,那么它应该进入Views / Controller目录 我是正确的还是我错过了什么?
我对这种局部观点非常混淆 我想加载我的主视图中的部分视图… 这里是简单的例子… 我正在加载Homecontroller索引操作的Index.cshtml作为主页面。 在index.cshtml我正在创build一个链接通过 @Html.ActionLink("load partial view","Load","Home") 在HomeController中,我添加了一个新的Action public PartialViewResult Load() { return PartialView("_LoadView"); } 在_LoadView.cshmtl我只是有一个 <div> Welcome !! </div> 但是,运行项目时,index.cshtml首先呈现,并显示我的链接“加载部分视图”…当我点击它进入新的页面从_LoadView.cshtml欢迎消息呈现到index.cshtml 。 什么可能是错的? 注意:我不想通过AJAX加载页面,也不想使用Ajax.ActionLink
我是新来的asp.net MVC所以请忍受我。 我需要build立一个重复多个视图的菜单。 什么会更好地服务Html.Action或Html.Partial的目的。
我对web应用程序开发很陌生,我想我会从最近的技术开始,所以我试图学习asp.net,就像MVC框架一样。 对于你来说,这可能是一个非常简单的问题,MVC专业人员。 我的问题是部分视图应该有一个相关联的动作,如果是的话,只要普通页面在局部视图上使用RenderPartial()就会调用这个动作。
在MVC3项目中,我有一个“_Layout.vbhtml”文件与此代码 <!DOCTYPE html> <html> <head> </head> <body> … <script src="@Url.Content("~/Scripts/jquery-1.8.2.min.js")"></script> @RenderSection("Scripts", false) </body> </html> 然后,我在Shared文件夹中使用了部分视图“ValidationScripts.vbhtml” @Section Scripts <script src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script> <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script> <script src="@Url.Content("~/Scripts/jquery.validate.fix.js")"></script> <script src="@Url.Content("~/Scripts/localization/messages_de.js")"></script> End Section 如果我从这样的视图调用部分视图… @ModelType MvcExample.MyModel @Code ViewData("Title") = "Test" End Code @Html.Partial("ValidationScripts") <h2>Just a Test</h2> … “脚本”部分不在页面上呈现,并且输出的HTML是 <!DOCTYPE html> <html> <head> </head> <body> … <script src="@Url.Content("~/Scripts/jquery-1.8.2.min.js")"></script> </body> </html> 我如何渲染部分视图中的部分?
所以,标题应该说明一切。 为了在ASP.NET MVC中创build可重用的组件,我们有3个选项(可能是其他我没有提到的): 部分视图: @Html.Partial(Model.Foo, "SomePartial") 定制编辑器模板: @Html.EditorFor(model => model.Foo) 自定义显示模板: @Html.DisplayFor(model => model.Foo) 根据实际的View / HTML,这三个实现是相同的: @model WebApplications.Models.FooObject <!– Bunch of HTML –> 所以,我的问题是 – 什么时候/如何决定使用哪一个? 我真正想要的是在创build一个问题之前问自己的问题列表,可以使用这些答案来决定使用哪个模板。 以下是我用EditorFor / DisplayForfind的两件事情: 它们在呈现HTML帮助器时尊重模型层次结构(例如,如果在“Foo”模型中有“Bar”对象,则“Bar”的HTML元素将以“Foo.Bar.ElementName”呈现,而部分将具有“的ElementName“)。 更健壮的,例如,如果您的ViewModel中有一个List<T> ,您可以使用@Html.DisplayFor(model => model.CollectionOfFoo) ,而且MVC足够聪明,可以看到它是一个集合并呈现出单个显示为每个项目(而不是一个部分,这将需要一个明确的循环)。 我也听说DisplayFor呈现“只读”模板,但我不明白 – 我不能在那里扔表吗? 有人能告诉我其他一些原因吗? 比较三个地方是否有列表/文章?
所以我有一个有问题的MVC Asp.net应用程序。 基本上,我有一个包含窗体的视图,其内容绑定到一个对象列表。 在这个循环中,它加载PartialView的项目被循环。 现在一切正常,直到提交表格。 当它被提交时,控制器被发送一个空对象列表。 下面的代码演示了这些问题。 父视图: @model IEnumerable<PlanCompareViewModel> @using (Html.BeginForm("ComparePlans", "Plans", FormMethod.Post, new { id = "compareForm" })) { <div> @foreach (var planVM in Model) { @Html.Partial("_partialView", planVM) } </div> } _partialView: @model PlanCompareViewModel <div> @Html.HiddenFor(p => p.PlanID) @Html.HiddenFor(p => p.CurrentPlan) @Html.CheckBoxFor(p => p.ShouldCompare) <input type="submit" value="Compare"/> </div> 这些是上述代码的类: PlanViewModel: public class PlansCompareViewModel […]
我做了一个小的项目,在这里理解Stephen Muecke的答案:将相同的部分视图称为多次数据给控制器? 几乎一切正常。 javascript从Partial View中添加了新的字段,我可以通过控制器方法为partial视图插入“temp”值来告诉它们绑定到模型。 但是,当我提交新的字段时,AddRecord()方法会抛出一个exception,显示模型没有被传入(“对象引用未设置为对象的实例”)。 此外,当我查看页面源代码时,BeginCollectionItem帮助程序正在插入隐藏标记,因为它应该围绕主视图中的表格显示预先存在的logging,而不是围绕javascript添加的新字段。 我究竟做错了什么? 我很新,所以感谢您的耐心! 我的主要观点: @model IEnumerable<DynamicForm.Models.CashRecipient> @using (Html.BeginForm("AddDetail", "CashRecipients", FormMethod.Post)) { @Html.AntiForgeryToken() <div id="CSQGroup"> </div> } <div> <input type="button" value="Add Field" id="addField" onclick="addFieldss()" /> </div> <script> function addFieldss() { //alert("ajax call"); $.ajax({ url: '@Url.Content("~/CashRecipients/RecipientForm")', type: 'GET', success:function(result) { //alert("Success"); var newDiv = document.createElement("div"); var newContent = document.createTextNode("Hi there and […]