小编Bra*_*bby的帖子

ASP.NET MVC编辑集合最佳实践 - 您的意见

鉴于以下类,您对处理创建/编辑的最佳方法有何看法,其中Attributes.Count可以是任何数字.

public class Product {
  public int Id {get;set;}
  public string Name {get;set;}
  public IList<Attribute> Attributes {get;set;}
}

public class Attribute {
  public string Name {get;set;}
  public string Value {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

用户应该能够在同一视图中编辑产品详细信息(名称)和属性详细信息(名称/值),包括添加和删除新属性.

处理模型中的更改很容易,处理UI和ActionMethod方面的最佳方法是什么?

collections asp.net-mvc

13
推荐指数
2
解决办法
6130
查看次数

带有嵌套列表的ASP.NET MVC DefaultModelBinder

我有一个表格,表格代表员工的时间表.顶部的天数,项目的侧面,每天/项目交叉点包含常规小时和加班的两个值.

页面模型的(简化)类定义是:

public class TimesheetFormModel {
    public List<Project> Projects;
    // other things...
}
public class Project {
    public string Name;
    public List<WorkUnit> WorkUnits;
}
public class WorkUnit {
    public DateTime Date;
    public decimal RegularHours;
    public decimal OvertimeHours;
}
Run Code Online (Sandbox Code Playgroud)

页面上的表单元素如下命名,试图让DefaultModelBinder获取它们.

model.Projects[0].Name // "New Project"
model.Projects[0].WorkUnits[0].Date // "5/23/2009 12:00:00 AM"
model.Projects[0].WorkUnits[0].RegularHours // 0
model.Projects[0].WorkUnits[0].OvertimeHours // 0

model.Projects[0].WorkUnits[1].Date // "5/24/2009 12:00:00 AM"
model.Projects[0].WorkUnits[1].RegularHours // 0
model.Projects[0].WorkUnits[1].OvertimeHours // 0

model.Projects[0].WorkUnits[2].Date // "5/25/2009 12:00:00 AM"
model.Projects[0].WorkUnits[2].RegularHours // 0
model.Projects[0].WorkUnits[2].OvertimeHours // 0

// etc.
Run Code Online (Sandbox Code Playgroud)

但是,提交视图时,model …

asp.net asp.net-mvc defaultmodelbinder

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

使用嵌套的ListView显示IGrouping <>

我需要从我的数据访问层检索一组Widgets,按widget.Manufacturer分组,以显示在一组嵌套的ASP.NET ListViews中.

问题是(据我所知)嵌套的ListView方法要求我在使用之前对数据进行整形,我无法找出最佳方法.到目前为止,我能够提出的最好的方法是在我的数据访问层中放置一个LINQ查询,如下所示:

var result = from widget in GetAllWidgets(int widgetTypeID)
             group widget by widget.Manufacturer into groupedWidgets
             let widgets = from widgetGroup in groupedWidgets
                           select widgetGroup
             select new { Manufacturer = groupedWidgets.Key, Widgets = widgets };
Run Code Online (Sandbox Code Playgroud)

当然,匿名类型不能传递,因此不起作用.定义一个自定义类来封装数据似乎是错误的方法.有没有什么方法可以在ASP.NET方面执行分组?我正在使用ObjectDataSources来访问DAL.

更新:好的,我不再创建匿名类型,而是我的DAL传递IEnumerable<IGrouping<Manufacturer, Widget>>给ASP.NET页面,但是如何在ListViews中使用它?我需要渲染以下HTML(或者非常类似的东西)

<ul>
  <li>Foo Corp.
    <ol>
      <li>Baz</li>
      <li>Quux</li>
    </ol>
  </li>
  <li>Bar Corp.
    <ol>
      <li>Thinger</li>
      <li>Whatsit</li>
    </ol>
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

最初,我在ListView中有一个ListView,如下所示:

<asp:ListView ID="ManufacturerListView">
    <LayoutTemplate>
        <ul>
            <asp:Placeholder ID="itemPlaceholder" runat="server" />
        </ul>
    </LayoutTemplate>
    <ItemTemplate>
        <li><asp:Label Text='<%# Eval("Manufacturer.Name") %>' />
        <li>
        <asp:ListView ID="WidgetsListView" runat="server" DataSource='<%# …
Run Code Online (Sandbox Code Playgroud)

linq asp.net listview

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

如何使用JavaScript轻松找到页面上的点与浏览器窗口底部之间的距离?

我的Web应用程序中的视图有一个可能非常长的表,因此我将其包装在div中,overflow: auto; max-height: 400px;以便用户可以滚动浏览它,同时保持页面上的其他控件可见.

我想使用一些JavaScript动态调整max-heightCSS属性,以便div延伸到浏览器窗口的底部.我该如何确定这个值?jQuery解决方案很好.

该表不会从页面顶部开始,因此我不能将高度设置为100%.

javascript jquery positioning dimensions

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

使用ObjectDataSource的泛型类

我有一个通用的Repository <T>类,我想与ObjectDataSource一起使用.存储库<T>位于名为DataAccess的单独项目中.根据MS新闻组的这篇文章(相关部分复制如下):

在内部,ObjectDataSource正在调用Type.GetType(string)来获取类型,因此我们需要遵循Type.GetType中记录的指南,了解如何使用泛型获取类型.您可以在Type.GetType上引用MSDN Library:

http://msdn2.microsoft.com/en-us/library/w3f99sx1.aspx

从文档中,您将了解到需要使用反引号(`)来表示使用泛型的类型名称.

此外,这里我们必须在类型名称字符串中指定程序集名称.

因此,对于您的问题,答案是使用类型名称,如下所示:

类型名= "TestObjectDataSourceAssembly.MyDataHandler`1 [System.String],TestObjectDataSourceAssembly"

好的,有道理.但是,当我尝试它时,该页面会抛出异常:

<asp:ObjectDataSource ID="MyDataSource" TypeName="MyProject.Repository`1[MyProject.MessageCategory],DataAccess" />
Run Code Online (Sandbox Code Playgroud)

[InvalidOperationException:找不到ObjectDataSource'MyDataSource'的TypeName属性中指定的类型.

奇怪的是,这只发生在我查看页面时.当我从VS2008设计器打开"配置数据源"对话框时,它正确地向我显示了我的通用Repository类的方法.调试时将TypeName字符串传递给Type.GetType()也会返回有效类型.什么给出了什么?

asp.net generics objectdatasource

9
推荐指数
1
解决办法
5267
查看次数

检测浏览器支持显示:内联块

如何检测浏览器是否支持CSS属性显示:inline-block?

javascript css cross-browser browser-detection

8
推荐指数
3
解决办法
4178
查看次数

复杂复合对象的自定义模型粘合剂帮助

我正在尝试编写一个自定义模型绑定器,但我很难设法如何绑定复杂的复合对象.

这是我想要绑定的类:

public class Fund
{
        public int Id { get; set; }
        public string Name { get; set; }
        public List<FundAllocation> FundAllocations { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这就是我尝试编写自定义绑定器的方式:

public class FundModelBinder : IModelBinder
{
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        throw new NotImplementedException();
    }

    public object GetValue(ControllerContext controllerContext, string modelName, Type modelType, ModelStateDictionary modelState)
    {
        var fund = new Fund();

        fund.Id = int.Parse(controllerContext.HttpContext.Request.Form["Id"]);
        fund.Name = controllerContext.HttpContext.Request.Form["Name"];

        //i don't know how to bind to the list property :(
        fund.FundItems[0].Catalogue.Id …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc modelbinders

7
推荐指数
2
解决办法
6564
查看次数

使用PrincipalSearcher搜索多个用户

是否可以使用单个PrincipalSearcher调用搜索多个用户名.也许通过提供所请求的用户名的"OR"作为过滤器标准?

directoryservices active-directory account-management

7
推荐指数
1
解决办法
1305
查看次数

如何使用具有可空类型的强类型HTML帮助程序?

我想在ASP.NET MVC 2中使用强类型HTML帮助程序,使用我的模型的属性Nullable<T>.

模型

public class TicketFilter {
    public bool? IsOpen { get; set; }
    public TicketType? Type{ get; set; } // TicketType is an enum
    // ... etc ...
}
Run Code Online (Sandbox Code Playgroud)

查看(HTML)

<p>Ticket status:
  <%: Html.RadioButtonFor(m => m.IsOpen, null) %> All
  <%: Html.RadioButtonFor(m => m.IsOpen, true) %> Open
  <%: Html.RadioButtonFor(m => m.IsOpen, false) %> Closed
</p>
<p>Ticket type:
  <%: Html.RadioButtonFor(m => m.Type, null) %> Any
  <%: Html.RadioButtonFor(m => m.Type, TicketType.Question) %> Question
  <%: Html.RadioButtonFor(m => m.Type, TicketType.Complaint) %> …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc html-helper nullable asp.net-mvc-2

7
推荐指数
1
解决办法
2577
查看次数

如何将AutoFixture自定义应用于从基类继承的任何内容?

为了试图干掉我的单元测试,我试图使用AutoFixture作为IoC容器来实例化我的被测系统(SUT),在这种特殊情况下是ASP.NET MVC Controller.因此,我想自定义AutoFixture以创建没有自动属性的控制器.

我尝试添加自定义ControllerBase,但它似乎不适用于子类ControllerBase.

fixture.Customize<ControllerBase>(c => c.OmitAutoProperties());
Run Code Online (Sandbox Code Playgroud)

这是我希望能够编写的测试示例:

    [Theory, AutoFixtureData]
    public void ControllerTest(AccountController controller) {
        Assert.Equal(default(UrlHelper), controller.Url);
    }
Run Code Online (Sandbox Code Playgroud)

当然,如果我为项目中的每个特定控制器手动添加一个自定义,但是谁想要这样做呢?有没有更好的办法?

c# unit-testing autofixture

7
推荐指数
1
解决办法
1364
查看次数