标签: partial-views

将EditorTemplate作为动作结果中的PartialView返回

我有一个类似的模型:

public class myModel 
{
    public ClassA ObjectA {get; set;}
    public ClassB ObjectB {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

在我的主视图中,我有类似这样的标签:

<div id="section1">
    <%=Html.EditorFor(m => m.ObjectA)%>
</div>
<div id="section2">
    <%=Html.EditorFor(m => m.ObjectB)%>
</div>
Run Code Online (Sandbox Code Playgroud)

ClassA和ClassB都定义了编辑器模板.

我创建了一些JavaScript,它使Ajax调用重新加载section1 div.我希望action方法返回EditorTemplates文件夹中ObjectA,ClassA.ascx的编辑器.

我的Action方法中有以下内容:

public ActionResult GetData(int input) 
{
    // Process input here and create modelData

    return PartialView("ClassA", modelData);
}
Run Code Online (Sandbox Code Playgroud)

这会产生错误,因为它无法找到ClassA视图.

我的解决方案是在Views文件夹中创建一个名为"GetData"的PartialView,然后我的返回呈现GetData视图.GetData视图只有一行代码:

<%=Html.RenderForModel()%>
Run Code Online (Sandbox Code Playgroud)

这确实有效,但我想知道是否有一种方法可以返回动作方法和编辑模板?

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

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

从传递给局部视图的嵌套复杂对象中获取值

我有一个ViewModel,它有一个复杂的对象作为其成员之一.复杂对象有4个属性(所有字符串).我正在尝试创建一个可重用的局部视图,我可以在其中传递复杂对象并让它为其属性生成带有html帮助器的html.这一切都很有效.但是,当我提交表单时,模型绑定器不会将值映射回ViewModel的成员,因此我不会在服务器端返回任何内容.如何读取用户在复杂对象的html帮助器中键入的值.

视图模型

public class MyViewModel
{
     public string SomeProperty { get; set; }
     public MyComplexModel ComplexModel { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

MyComplexModel

public class MyComplexModel
{
     public int id { get; set; }
     public string Name { get; set; }
     public string Address { get; set; }
     ....
}
Run Code Online (Sandbox Code Playgroud)

调节器

public class MyController : Controller
{
     public ActionResult Index()
     {
          MyViewModel model = new MyViewModel();
          model.ComplexModel = new MyComplexModel();
          model.ComplexModel.id = 15;
          return View(model);
     }

     [HttpPost]
     public ActionResult Index(MyViewModel model) …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc model partial-views

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

在EditorTemplate中渲染字段名称(通过EditorFor()呈现)

我目前正在为ASP.NET MVC中的网站构建Admin后端.

在ASP.NET MVC应用程序中,我开始使用'EditorFor'辅助方法,如下所示:

<div id="content-edit" class="data-form">
    <p>
        <%= Html.LabelFor(c => c.Title) %>
        <%= Html.TextBoxFor(c => c.Title)%>
    </p>
    <p>
        <%= Html.LabelFor(c => c.Biography) %>
        <%= Html.EditorFor(c => c. Biography)%>
    </p>
</div>
Run Code Online (Sandbox Code Playgroud)

在模型中,"传记"字段已经用以下内容进行了装饰:[UIHelper("Html")].

我有一个'Html'局部视图(在Views/Shared/EditorTemplates下):

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.XML.Linq.XElement>" %>

<textarea class="html">
    <%= Model.ToString() %>
</textarea>
Run Code Online (Sandbox Code Playgroud)

现在我想将'textarea'的'ID'属性设置为字段的名称,如下所示:

<textarea id="Biography" class="html">
    ...
</textarea>
Run Code Online (Sandbox Code Playgroud)

但是我无法通过当前的设置看到这样做的方法.

我能想到的只是创建一个'Html'ViewModel,它包含'Value'属性和'ControlID'属性.

但是如果我基于这个视图,而不是'System.XML.Linq.XElement',它将不再与'EditorFor'辅助方法兼容,我必须手动完成所有操作.

有没有人有类似的问题呢?

asp.net-mvc partial-views editorfor asp.net-mvc-2

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

在ascx文件中使用Html.RenderPartial()

我正在尝试在acsx文件中使用Html.RenderPartial,我收到一个错误:

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

<a href="/projects/<%=project.Id %>">
  <% Html.Label("fdf"); %>
  <% Html.RenderPartial("ProjectName", Model.Id); %></a></li>
 <%} %>
Run Code Online (Sandbox Code Playgroud)

但是我已经导入了必要的命名空间,所以它不会出错

<% Html.Label("fdf"); %>
Run Code Online (Sandbox Code Playgroud)

有什么方法可以在ascx文件中使用Html.RenderPartial吗?

asp.net-mvc renderpartial partial-views

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

如何处理返回PartialView的ajax调用的控制器操作中的模型状态错误

我有一个POST控制器动作,返回一个局部视图.一切似乎都很容易.但.我使用加载它$.ajax(),将类型设置为html.但是当我的模型验证失败时,我认为我应该抛出模型状态错误的错误.但我的回复总是返回500 Server错误.

如何在不返回Json的情况下报告模型状态错误.我仍然希望返回部分视图,我可以直接附加到某些HTML元素.

编辑

我还想避免返回错误局部视图.这看起来像是客户端的成功.让客户端解析结果以查看它是否真正成功容易出错.设计人员可能会更改局部视图输出,仅此一项就会破坏功能.所以我想抛出异常,但是将正确的错误消息返回给ajax客户端.

ajax asp.net-mvc jquery partial-views

22
推荐指数
1
解决办法
8431
查看次数

更新PartialView mvc 4

安永!如何使用模型中的数据刷新部分视图?第一次,当页面加载它正常工作时,但不是当我从Action调用它时.我创建的结构如下:

在我看来的任何地方:

 @{ Html.RenderAction("UpdatePoints");}
Run Code Online (Sandbox Code Playgroud)

我的PartialView"UpdatePoints":

<h3>Your points are @ViewBag.points </h3>
Run Code Online (Sandbox Code Playgroud)

在控制器我有:

public ActionResult UpdatePoints()
        {

            ViewBag.points =  _Repository.Points;
            return PartialView("UpdatePoints");
        }
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

UPDATE

感谢你的帮助!最后我按照你的建议使用JQuery/AJAX,使用模型传递参数.

所以,在JS中:

$('#divPoints').load('/Schedule/UpdatePoints', UpdatePointsAction);
var points= $('#newpoints').val();
$element.find('PointsDiv').html("You have" + points+ " points");
Run Code Online (Sandbox Code Playgroud)

在控制器中:

var model = _newPoints;
return PartialView(model);
Run Code Online (Sandbox Code Playgroud)

在视图中

<div id="divPoints"></div>
@Html.Hidden("newpoints", Model)
Run Code Online (Sandbox Code Playgroud)

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

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

ASP.NET MVC局部视图慢吗?

我碰巧检查了我们正在构建的ASP.NET MVC应用程序的性能.我打算将一个局部视图插入循环中,出于好奇,我检查了渲染页面所需的时间.结果并不好.

我需要做更多的结论性调查,但是如果有人有类似的问题或更多的洞察力,这就是我到目前为止所做的.首先,我应该说所有结果和测量都是在多次页面加载后完成的,并且我已经<compilation debug="false">在web.config中设置了.

  • 似乎单个渲染部分会导致大约5ms的命中(至少在我的环境中).当我内联部分视图的实际内容时,我几乎达到了0ms.
  • 当我将一个空的局部视图包含在一个约70个元素的循环中时,总渲染时间增加了约60ms.所以可能有一些缓存,但它并不理想.
  • 我调试了ASP.NET MVC,发现部分视图被缓存,但它只缓存到ascx的路径.然后,每次使用BuildManager.CreateInstanceFromVirtualPath方法实例化实际视图.
  • 现在有趣的是:当使用WebForms语法(<my:UserContol runat="server" />)包含相同的局部视图时,额外的60ms就会消失.

因此,基于上面的观察,似乎罪魁祸首是BuildManager.CreateInstanceFromVirtualPath方法.也许,这并不意味着多次被召唤.Webforms可能不会使用它; 或者以某种方式使用它只为每个ascx一次?

asp.net-mvc partial-views

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

返回部分视图的控制器操作会在授权失败时插入登录页面

我有一个视图,使用jQuery从控制器操作加载部分视图.控制器操作使用Authorize属性进行修饰,如果用户在调用该操作被重定向到正确的LogOn页面时超时,则LogOn页面将插入到部分视图已经消失的视图中.

还有另一篇文章在这里描述使用jQuery但遗憾的是它不包含任何代码示例这正是我需要的,因为我不是很熟悉的jQuery(和新的Web开发)的解决方案,我需要得到这个问题的解决我会尽快.

我想要做的就是将用户重定向到正确的LogOn页面,这对我来说非常直接,但到目前为止它似乎并非如此.如果jQuery是要走的路,有人可以发一个代码示例,这真的会帮助我.

谢谢.

authentication asp.net-mvc jquery partial-views authorize-attribute

21
推荐指数
1
解决办法
5033
查看次数

Asp:net MVC 3:@ Html.Editor在模板中对我的模型进行子集合?

我已经被困了很长时间来编辑我的模型的子集合,模型的集合变为空.

我终于找到了一个解决方案,但我发现它有点脏:

首先是我的测试数据:

模型对象:

    public class ContainerObject
    {
        public String Title { get; set; }
        public List<ContainedObject> ObjectList { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

子集合对象:

public class ContainedObject
{
    public int Id { get; set; }
    public String Text { get; set; }
    public Boolean IsSelected { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

生成对象的控制器方法

    public ActionResult TestForm()
    {
        return View(new ContainerObject()
        {
            Title = "This is a sample title",
            ObjectList = new List<ContainedObject>()
                {
                    new ContainedObject(){Id=1, IsSelected = true, Text="ObjectOne"},
                    new …
Run Code Online (Sandbox Code Playgroud)

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

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

为什么我需要在asp.net mvc中使用下划线来表示部分视图

只是为了区分对话框中使用的视图或foreach循环中使用的视图(客户详细信息)?

asp.net-mvc partial-views

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