标签: asp.net-mvc-3

MVC Razor视图嵌套foreach的模型

想象一个常见的场景,这是我遇到的更简单的版本.我实际上有几层进一步筑巢......

但这就是场景

主题包含列表类别包含列表产品包含列表

我的控制器提供了一个完全填充的主题,包含该主题的所有类别,此类别中的产品及其订单.

订单集合有一个名为Quantity(以及许多其他)的属性需要可编辑.

@model ViewModels.MyViewModels.Theme

@Html.LabelFor(Model.Theme.name)
@foreach (var category in Model.Theme)
{
   @Html.LabelFor(category.name)
   @foreach(var product in theme.Products)
   {
      @Html.LabelFor(product.name)
      @foreach(var order in product.Orders)
      {
          @Html.TextBoxFor(order.Quantity)
          @Html.TextAreaFor(order.Note)
          @Html.EditorFor(order.DateRequestedDeliveryFor)
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

如果我使用lambda然后我似乎只获得对顶级Model对象的引用,"Theme"不是foreach循环中的那些.

是我试图在那里做甚至可能还是我高估或误解了什么是可能的?

有了上面我在TextboxFor,EditorFor等上得到了一个错误

CS0411:无法从用法中推断出方法'System.Web.Mvc.Html.InputExtensions.TextBoxFor(System.Web.Mvc.HtmlHelper,System.Linq.Expressions.Expression>)'的类型参数.尝试显式指定类型参数.

谢谢.

c# asp.net view razor asp.net-mvc-3

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

如何在不使用Controllers基类的情况下为所有视图设置ViewBag属性?

在过去,我通过让所有控制器继承公共基本控制器,以全局方式将常见属性(例如当前用户)粘贴到ViewData/ViewBag上.

这使得我可以在基本控制器上使用IoC,而不仅仅是为这些数据扩展到全局共享.

我想知道是否有另一种方法将这种代码插入MVC管道?

asp.net-mvc viewdata autofac asp.net-mvc-3

93
推荐指数
6
解决办法
7万
查看次数

@ Html.HiddenFor不适用于ASP.NET MVC中的列表

我正在使用包含List作为属性的模型.我正在使用从SQL Server中获取的项目填充此列表.我希望List隐藏在视图中并传递给POST操作.稍后我可能想要使用jQuery向此List添加更多项目,这使得数组不适合稍后进行扩展.通常你会用

@Html.HiddenFor(model => model.MyList)
Run Code Online (Sandbox Code Playgroud)

要完成此功能,但由于某种原因,POST中的List始终为null.

很简单的问题,任何人都知道为什么MVC会像这样?

c# asp.net hidden-field asp.net-mvc-3

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

Razor If/Else条件运算符语法

没有太多运气,我在Razor中有以下if/else语句,效果很好

<small>
  @if(deletedView){
     @:Deleted
  } 
  else {
     @:Created
  } by
</small> 
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情:

<small>
  @(deletedView) ? @:Deleted : @:Created by
</small>
Run Code Online (Sandbox Code Playgroud)

但那失败了.什么是正确的语法?

razor asp.net-mvc-3

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

ASP MVC 3中的一个视图中的两个模型

我有2个型号:

public class Person
{
    public int PersonID { get; set; }
    public string PersonName { get; set; }
}
public class Order
{
    public int OrderID { get; set; }
    public int TotalSum { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想在SINGLE视图中编辑BOTH类的对象,所以我需要这样的东西:

@model _try2models.Models.Person
@model _try2models.Models.Order

@using(Html.BeginForm())
{
    @Html.EditorFor(x => x.PersonID)
    @Html.EditorFor(x => x.PersonName)
    @Html.EditorFor(x=>x.OrderID)
    @Html.EditorFor(x => x.TotalSum)
}
Run Code Online (Sandbox Code Playgroud)

当然,这不起作用:.cshtml文件中只允许一个"模型"语句.可能有一些解决方法吗?

viewmodel asp.net-mvc-3

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

复选框是否可以为空的布尔值

我的模型有一个必须可以为空的布尔值

public bool? Foo
{
   get;
   set;
}
Run Code Online (Sandbox Code Playgroud)

所以在我的Razor cshtml中

@Html.CheckBoxFor(m => m.Foo)
Run Code Online (Sandbox Code Playgroud)

除了不起作用.也没有(bool)施放它.如果我做

@Html.CheckBoxFor(m => m.Foo.Value)
Run Code Online (Sandbox Code Playgroud)

这不会产生错误,但在发布时它不会绑定到我的模型,并且foo设置为null.什么是在页面上显示Foo并使其在帖子上绑定到我的模型的最佳方式?

nullable razor asp.net-mvc-3

92
推荐指数
6
解决办法
9万
查看次数

使用Razor的Html.RenderPartial()语法

这是有效的,因为它返回字符串中部分视图呈现的结果:

@Html.Partial("Path/to/my/partial/view")
Run Code Online (Sandbox Code Playgroud)

但我更喜欢使用RenderPartial,似乎我需要写:

@{Html.RenderPartial("Path/to/my/partial/view");}
Run Code Online (Sandbox Code Playgroud)

代替:

@Html.RenderPartial("Path/to/my/partial/view");
Run Code Online (Sandbox Code Playgroud)

让它工作.错误信息:

 Compiler Error Message: CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments
Run Code Online (Sandbox Code Playgroud)

如果有更好的方法而不是@{...}只为一个方法调用打开代码块?

asp.net-mvc razor asp.net-mvc-3

92
推荐指数
3
解决办法
13万
查看次数

MVC 3文件上传和模型绑定

我有一个表单上传,但我想传递我的数据库的模型信息,以保存具有不同名称的文件.

这是我的剃刀观点:

@model CertispecWeb.Models.Container

@{
  ViewBag.Title = "AddDocuments";
}

<h2>AddDocuments</h2>

@Model.ContainerNo

@using (Html.BeginForm("Uploadfile", "Containers", FormMethod.Post, 
            new { enctype = "multipart/form-data" }))
{
    <input type='file' name='file' id='file' />
    <input type="submit" value="submit" />
}
Run Code Online (Sandbox Code Playgroud)

这是我的控制器:

[HttpPost]
public ActionResult Uploadfile(Container containers, HttpPostedFileBase file)
{
     if (file.ContentLength > 0)
     {
        var fileName = Path.GetFileName(file.FileName);
        var path = Path.Combine(Server.MapPath("~/App_Data/Uploads"),
                       containers.ContainerNo);
        file.SaveAs(path);
     }

     return RedirectToAction("Index");
}
Run Code Online (Sandbox Code Playgroud)

模型信息不会传递给控制器​​.我已经读过我可能需要更新模型,我该怎么做?

asp.net-mvc razor asp.net-mvc-3

91
推荐指数
3
解决办法
10万
查看次数

91
推荐指数
3
解决办法
16万
查看次数

什么是routes.IgnoreRoute("{resource} .axd/{*pathInfo}")

什么是 routes.IgnoreRoute("{resource}.axd/{*pathInfo}")

我在项目中找不到任何.axd文件,我可以删除此路由规则吗?

asp.net-mvc asp.net-mvc-routing asp.net-mvc-3

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