标签: mvccontrib

反映参数名称:滥用C#lambda表达式还是语法亮度?

我正在看MvcContrib网格组件,我很着迷,但同时被网格语法中使用的语法技巧击退:

.Attributes(style => "width:100%")
Run Code Online (Sandbox Code Playgroud)

上面的语法将生成的HTML的style属性设置为width:100%.现在如果你注意,"风格"没有指定,是从表达式中参数的名称推断出来的!我不得不深入研究这个并发现"神奇"发生的地方:

Hash(params Func<object, TValue>[] hash)
{
    foreach (var func in hash)
    {
        Add(func.Method.GetParameters()[0].Name, func(null));
    }
}
Run Code Online (Sandbox Code Playgroud)

实际上,代码使用正式的编译时,参数名来创建属性名称 - 值对的字典.结果语法结构确实非常具有表现力,但同时也非常危险.lambda表达式的一般用法允许替换使用的名称而没有副作用.我在一本书中看到一个例子,说collection.ForEach(book => Fire.Burn(book))我知道我可以用我的代码编写collection.ForEach(log => Fire.Burn(log)),这意味着同样的事情.但是使用MvcContrib网格语法突然间,我发现代码主动查找并根据我为变量选择的名称进行分解!

这是C#3.5/4.0社区和lambda表达爱好者的常见做法吗?或者是一个我不应该担心的流氓一招特立独行?

c# asp.net-mvc lambda mvccontrib

425
推荐指数
18
解决办法
3万
查看次数

ASP.NET MVC局部视图:输入名称前缀

假设我有ViewModel之类的

public class AnotherViewModel
{
   public string Name { get; set; }
}
public class MyViewModel
{
   public string Name { get; set; }
   public AnotherViewModel Child { get; set; }
   public AnotherViewModel Child2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在视图中,我可以渲染部分

<% Html.RenderPartial("AnotherViewModelControl", Model.Child) %>
Run Code Online (Sandbox Code Playgroud)

在部分我会做

<%= Html.TextBox("Name", Model.Name) %>
or
<%= Html.TextBoxFor(x => x.Name) %>
Run Code Online (Sandbox Code Playgroud)

但是,问题是两者都将呈现name ="Name",而我需要name ="Child.Name"才能使模型绑定器正常工作.或者,当我使用相同的局部视图渲染第二个属性时,name ="Child2.Name".

如何使我的局部视图自动识别所需的前缀?我可以将它作为参数传递,但这太不方便了.当我想要例如以递归方式呈现它时,情况会更糟.有没有办法用前缀渲染部分视图,或者更好的是,通过自动重新调用lambda表达式来实现

<% Html.RenderPartial("AnotherViewModelControl", Model.Child) %>
Run Code Online (Sandbox Code Playgroud)

会自动添加正确的"孩子".生成的名称/ id字符串的前缀?

我可以接受任何解决方案,包括第三方视图引擎和库 - 我实际上使用Spark View引擎(我使用它的"解决"问题)和MvcContrib,但没有在那里找到解决方案.XForms,InputBuilder,MVC v2 - 提供此功能的任何工具/洞察都会很棒.

目前我考虑自己编码,但这似乎是浪费时间,我不敢相信这些琐碎的东西还没有实现.

可能存在许多手动解决方案,欢迎所有这些解决方案.例如,我可以强制我的部分基于IPartialViewModel <T> {public string Prefix; T模型; …

asp.net-mvc spark-view-engine mvccontrib

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

ASP.Net MVC 3中的多项目区域

有没有人对asp.net mvc 3中的多项目区域支持有任何想法?因为它在mvc 2中降级为未来状态.如果它仍未包括在内,那么我们是否应该通过MvcContrib期待ASP.Net MVC Portable Areas.你可以分享你的经历吗?

管理大型应用程序的推荐方法是什么?我读到了MEF.在什么情况下建议使用MEF?

asp.net-mvc visual-studio-2010 mvccontrib asp.net-mvc-3 asp.net-mvc-2

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

.NET MVC是否具有强类型RedirectToAction?

由于我现在决定让RC继续使用Beta,我无法知道是否RedirectToAction添加了强类型.是否有人尝试过它并且在RC中是否存在强类型RedirectToAction(也许ActionLink)?

asp.net-mvc mvccontrib url-redirection

19
推荐指数
3
解决办法
4599
查看次数

ASP.NET MVC 3:具有继承/多态的DefaultModelBinder

首先,对于大帖子(我先尝试做一些研究)和同一问题的混合技术(ASP.NET MVC 3,Ninject和MvcContrib),我感到很遗憾.

我正在使用ASP.NET MVC 3开发一个项目来处理一些客户端订单.

简而言之:我有一些继承自和抽象类的对象,Order当我向控制器发出POST请求时,我需要解析它们.我该如何解决正确的类型?我是否需要覆盖DefaultModelBinder该类,或者还有其他方法可以执行此操作?有人可以提供一些代码或其他链接,如何做到这一点?任何帮助都会很棒!如果帖子令人困惑,我可以做任何改变以表明清楚!

所以,对于我需要处理的订单,我有以下继承树:

public abstract partial class Order {

    public Int32 OrderTypeId {get; set; }

    /* rest of the implementation ommited */
}

public class OrderBottling : Order { /* implementation ommited */ }

public class OrderFinishing : Order { /* implementation ommited */ }
Run Code Online (Sandbox Code Playgroud)

这些类都是由Entity Framework生成的,所以我不会修改它们,因为我需要更新模型(我知道我可以扩展它们).此外,会有更多的订单,但都来自Order.

我有一个通用的view(Create.aspx)来创建一个订单,这个视图为每个继承的订单调用一个强类型的局部视图(在这种情况下OrderBottlingOrderFinishing).我Create()OrderController类上的POST请求定义了一个GET请求的方法和其他方法.第二个是如下:

public class OrderController : Controller
{
    /* rest of the …
Run Code Online (Sandbox Code Playgroud)

c# inheritance mvccontrib ninject-2 asp.net-mvc-3

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

ASP.NET MVC 3,Razor Views和Portable Area

我试图使用ASP.NET MVC 3和razor视图的可移植视图,因为这似乎是创建一个简单的插件架构的最佳方式.所以我有我的类库设置,我的视图位于/Views/Admin/Index.cshtml中,它被设置为嵌入式资源.然后,我将该项目作为主Web应用程序项目的依赖项.当我尝试访问管理控制器时,我会收到一条无法找到该视图文件的消息(因此正确地包含了控制器).我假设它正在尝试查看主Web应用程序项目而不是可移植区域二进制文件.有没有办法让剃刀视图与便携式区域一起使用?

mvccontrib portable-areas razor asp.net-mvc-3

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

如何在ASP.NET MVC 3中处理每个键的多个值?

我有以下问题:我在最重要的功能中工作的系统之一是搜索页面.在这个页面中,我有一些选项,如每页记录,开始日期,结束日期和有问题的一个:类型.必须有可能选择多种类型(大多数时候,所有这些都将被选中).为了完成这项工作,我创建了以下内容:

<div>
    <label>Eventos:</label>
    <div>
        @Html.ListBox("events", Model.Events, new { style = "width: 100%" })
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

它创建了一个列表框,我可以在其中选择多个选项,当表单被提交时,我的查询字符串将如下所示:

/ 10?周期= 9&事件= 1&事件= 3&recordsPerPage = 10

在那里可以看到创建了两个事件(这是我以前说过的类型).此页面的操作方法将其List<long>作为其参数之一,表示两个events值.当我想在MVC Contrib中使用它时,问题就开始了.他们的寻呼机工作得很好,但正如我的要求,我创建了另一个寻呼机,它显示了用户所在之前和之前五页的链接.为此,在我的代码的一部分中,我必须执行以下操作(这与MVC Contrib寻呼机非常相似,有效):

public RouteValueDictionary GetRoute(int page)
{
    var routeValues = new RouteValueDictionary();
    foreach (var key in Context.Request.QueryString.AllKeys.Where(key => key != null))
    {
        routeValues[key] = Context.Request.QueryString[key];
    }

    routeValues["page"] = page;
    return routeValues;
}   
Run Code Online (Sandbox Code Playgroud)

然后:

@Html.ActionLink(page.ToString(), action, controller, GetRoute(page), null)
Run Code Online (Sandbox Code Playgroud)

问题是它是一个字典,它第二次设置routeValues["events"]擦除前一个的值.

你们对如何使用它有什么想法吗?

c# dictionary mvccontrib asp.net-mvc-3

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

使用MVCContrib网格进行编辑

我刚开始在测试项目中使用MVCContrib网格.我很难找到有关如何使用它进行编辑/更新/删除的信息.

任何人都可以向我指出如何将行放入编辑模式的信息,或者如果该网格没有这样的东西,请讨论在MVC中编辑列表数据的最佳实践.

asp.net-mvc mvccontrib

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

如何将css类应用于mvccontrib网格

我在asp.net mvc(C#)应用程序中使用mvccontrib网格.

如何将css类应用于为mvccontrib网格属性创建的网格?

我希望构建如下:

<table border="0" cellspacing="0" class="usertable">....</table>
Run Code Online (Sandbox Code Playgroud)

默认情况下,mvccontrib网格具有"grid"类.我需要将它更改为我的自定义css类

asp.net-mvc grid mvccontrib

12
推荐指数
1
解决办法
5448
查看次数

MVC4和MVCContrib

MVCContrib目前是否支持MVC4?我首先看一下将项目从MVC2切换到MVC4并且在Portable Areas方面遇到了一些问题.

mvccontrib asp.net-mvc-4

12
推荐指数
2
解决办法
7738
查看次数