创建新的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中执行此操作的最佳方法是什么?
我在我的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
当我的列是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) 当您在上下文中调用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) 我有一个更新面板,其条件和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控件位于转发器中,并且可能不会立即存在,因此它的行为就像它不存在一样.我怎么能绕过这个?
我正在尝试为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?
是否有DateTime.ToString("")的格式值,它将以三位数指定一年中的某一天?
例如:
我在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?
我有一个部署了域的服务结构集群 foo.northcentralus.cloudapp.azure.com
它具有单个节点类型,具有单个公共IP地址/负载平衡器.
假设我已经部署了以下两个应用程序:
如何设置它以便我可以在端口80上托管多个域?(假设我明显拥有这两个领域)
我的群集中是否需要多个公共IP地址才能支持此功能?
我有一个包含两个项目的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) c# ×4
asp.net-mvc ×3
.net ×1
ado.net ×1
ajax ×1
asp.net ×1
azure ×1
datetime ×1
dns ×1
msbuild ×1
navigation ×1
ninject ×1
repeater ×1
sql ×1
sql-server ×1
transactions ×1
updatepanel ×1
xml ×1
xpath ×1