小编Dis*_*ile的帖子

ASP.net MVC - 导航并突出显示"当前"链接

创建新的MVC项目时,它会使用以下标记创建Site.master:

<div id="menucontainer">
    <ul id="menu">
        <li><%: Html.ActionLink("Home", "Index", "Home")%></li>
        <li><%: Html.ActionLink("About", "About", "Home")%></li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

我想在这里放置代码,如果我在该页面上,将突出显示当前链接.

如果我添加另一个链接,例如:

<li><%: Html.ActionLink("Products", "Index", "Products")%></li>
Run Code Online (Sandbox Code Playgroud)

如果我在Products控制器中执行任何操作,我希望Products链接处于活动状态(使用类似.active的css类).

如果我在HomeController About操作上,那么About链接应该是活动的.如果我在HomeController的Index操作上,Home链接应该是活动的.

在MVC中执行此操作的最佳方法是什么?

c# navigation asp.net-mvc

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

Ninject + ASP.net MVC +实体框架 - 我的上下文何时处理?

我在我的MVC 3应用程序中使用Ninject,我的一个依赖项是在Entity Framework上:

interface IFooRepository
{
    Foo GetFoo(int id);
}

public EFFooRepository : IFooRepository
{
    private FooDbContext context;

    public EFFooRepository(FooDbContext context)
    {
        this.context = context;
    }
 }
Run Code Online (Sandbox Code Playgroud)

我在Ninject中设置了这样的绑定,所以如果我有多个依赖项并且它们都需要数据上下文,它们最终会共享相同的上下文:

Bind<FooDbContext>().ToSelf().InRequestScope();
Run Code Online (Sandbox Code Playgroud)

我不确定何时处理我的背景.既然我不是那个实例化它的人,它会不会被处理掉,或者它会在垃圾收集时被处理掉?Ninject是否知道在完成任何事情后处理它?

asp.net-mvc entity-framework dependency-injection ninject inversion-of-control

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

SqlDbType和Geography

当我的列是Geography类型时,我应该使用什么SqlDbType枚举?我正在使用MS SQL Server 2008 R2.

这就是我正在寻找的具体内容:

// ADO.net - what do I use for the SqlDbType when it's defined 
// as Geography in the stored proc
SqlCommand command = new SqlCommand();
command.CommandText = "dbo.up_Foobar_Insert";
command.CommandType = CommandType.StoredProcedure;

command.Parameters.Add("@SomeGeographyType", SqlDbType.????);
Run Code Online (Sandbox Code Playgroud)

sql ado.net sql-server-2008

8
推荐指数
2
解决办法
5770
查看次数

实体框架如何处理交易?

当您在上下文中调用SaveChanges时,Entity Framework是否使用事务?有没有办法完全关闭交易,或让某个实体选择退出交易?

AdventureWorksEntities db = new AdventureWorksEntities();

Product p1 = new Product();
// ...

Product p2 = new Product();
// set invalid data

db.Products.AddObject(p1);
db.Products.AddObject(p2);

// what happens when I call this - does it roll back everything?
// can i tell p2 not to participate in the transaction?
db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

c# transactions entity-framework-4

8
推荐指数
1
解决办法
1698
查看次数

无法在UpdatePanel中找到具有ID的控件

我有一个更新面板,其条件和ChildrenAsTriggers的UpdateMode设置为false.我只想要几个控件来导致异步回发:

<asp:UpdatePanel ID="updPnlMain" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
<ContentTemplate>

      // ...
      <asp:Repeater ID="rptListData" runat="server">
          <ItemTemplate>
              <asp:Button ID="btnAddSomething" runat="server" OnClick="btnAddSomething_Click" />
          </ItemTemplate>
      </asp:Repeater>
      // ...
</ContentTemplate>
<Triggers>
    <asp:AsyncPostBackTrigger ControlID="btnAddSomething" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)

我尝试加载此页面时收到以下错误:

A control with ID 'btnAddSomething' could not be found for the trigger in UpdatePanel 'updPnlMain'.
Run Code Online (Sandbox Code Playgroud)

由于我的btnAddSomething控件位于转发器中,并且可能不会立即存在,因此它的行为就像它不存在一样.我怎么能绕过这个?

c# asp.net ajax updatepanel repeater

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

编辑器模板不适用于DisplayFormat

我正在尝试为DateTime字段创建一个编辑器模板,它似乎不尊重我的DisplayFormat属性.

我的模特:

public class Project
{
    [Display(Name="Project Name")]
    [Required]
    public string ProjectName { get; set; }

    [Display(Name="Start Date")]
    [DisplayFormat(DataFormatString="{0:M/d/yyyy}", ApplyFormatInEditMode=true)]
    public DateTime? StartDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的编辑器模板在/Views/Projects/EditorTemplates/DateTime.cshtml文件夹中

@model DateTime?
@Html.TextBoxFor(m => Model, new { @class="datepicker" })
Run Code Online (Sandbox Code Playgroud)

以下是将所有内容联系在一起的视图:

@model Project

<fieldset>
    <legend>Project</legend>

    <div class="editor-label">
        @Html.LabelFor(m => m.ProjectName)
    </div>
    <div class="editor-field">
        @Html.EditorFor(m => m.ProjectName)
        @Html.ValidationMessageFor(m => m.ProjectName)
    </div>

    <div class="editor-label">
        @Html.LabelFor(m => m.StartDate)
    </div>
    <div class="editor-field">
        @Html.EditorFor(m => m.StartDate)
        @Html.ValidationMessageFor(m => m.StartDate)
    </div>
</fieldset>
Run Code Online (Sandbox Code Playgroud)

当我这样的时候,我看到了约会的时间部分.当我删除编辑器模板然后它工作正常,只显示日期部分.当我有一个编辑模板时,为什么它似乎忽略了DisplayFormat?

.net asp.net-mvc mvc-editor-templates asp.net-mvc-3

8
推荐指数
1
解决办法
4385
查看次数

DateTime格式日

是否有DateTime.ToString("")的格式值,它将以三位数指定一年中的某一天?

例如:

  • 2012年1月1日将是001
  • 2012年2月1日将是032
  • 2012年12月31日将是366(闰年)
  • 2011年12月31日将是365

c# datetime

8
推荐指数
1
解决办法
9303
查看次数

具有多个名称空间的SQL Server Xml查询

我在SQL服务器中有一个包含Xml列的表,我在查询时遇到了问题.我不太了解XPath来确定我的查询是否错误,或者是否因为看起来像是冲突的命名空间.这是一个示例xml:

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"
            xmlns:a="http://www.w3.org/2005/08/addressing" 
            xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <s:Header>
        <!-- snip -->
    </s:Header>
    <s:Body>
        <FetchRequest xmlns="http://www.foobar.org/my/schema">
            <Contract xmlns:a="http://www.foobar.org/2014/04/datacontracts"
                      xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
                <a:RequestedBy>John Doe</a:RequestedBy>
                <a:TransactionId>ABC20140402000201</a:TransactionId>
            </Contract>
        </FetchRequest>
    </s:Body>
</s:Envelope>
Run Code Online (Sandbox Code Playgroud)

我想从xml中检索TransactionId.我试过的查询是这样的:

SELECT TOP 100
MessageXml,
MessageXml.value('
    declare namespace s="http://www.w3.org/2003/05/soap-envelope";
    declare namespace a="http://www.w3.org/2005/08/addressing";
    (/s:Envelope/s:Body/FetchRequest/Contract/a:TransactionId)[1]', 'varchar(max)')
FROM dbo.Message
Run Code Online (Sandbox Code Playgroud)

我为MessageXml.value返回NULL.如果我删除s之后的所有内容:Body我似乎得到了一堆串联的文本,但是一旦我添加了FetchRequest,我就会在结果中得到NULL.

我注意到Contract元素定义了a的命名空间,而Envelope也定义了a的命名空间,但我不确定这是否是一个问题.

在给定上面的xml示例的情况下,如何使用XPath查询检索TransactionId?

xml sql-server xpath

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

在服务结构上托管多个公共站点

我有一个部署了域的服务结构集群 foo.northcentralus.cloudapp.azure.com

它具有单个节点类型,具有单个公共IP地址/负载平衡器.

假设我已经部署了以下两个应用程序:

如何设置它以便我可以在端口80上托管多个域?(假设我明显拥有这两个领域)

我的群集中是否需要多个公共IP地址才能支持此功能?

dns azure azure-service-fabric

8
推荐指数
1
解决办法
2808
查看次数

MSBuild单个NuGet包中的多个dll

我有一个包含两个项目的Visual Studio 2017解决方案:

Foo.csproj
Foo.Core.csproj
Run Code Online (Sandbox Code Playgroud)

这两个项目都针对多个框架: net452;netstandard1.2

Foo.csproj包含对Foo.Core.csproj的项目引用:

<ItemGroup>
    <ProjectReference Include="..\Foo.Core\Foo.Core.csproj" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

当我为Foo.csproj生成NuGet包时,我希望nupkg文件包含这两个程序集.

目前发生的是创建的NuGet包具有Foo.dll,然后是Foo.Core上的NuGet依赖(它不存在).

如何使用msbuild包含两个程序集的单个NuGet包生成?

作为参考,这是我目前正在使用的命令(这不符合我的要求):

msbuild /p:restore,pack Foo.csproj
Run Code Online (Sandbox Code Playgroud)

msbuild visual-studio-2017

8
推荐指数
2
解决办法
3771
查看次数