小编Kyl*_*Mit的帖子

属性的自定义模型绑定器

我有以下控制器操作:

[HttpPost]
public ViewResult DoSomething(MyModel model)
{
    // do something
    return View();
}
Run Code Online (Sandbox Code Playgroud)

哪里MyModel是这样的:

public class MyModel
{
    public string PropertyA {get; set;}
    public IList<int> PropertyB {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

所以DefaultModelBinder应该没有问题地绑定它.唯一的事情是我想使用特殊/自定义绑定器进行绑定PropertyB,我也想重用这个绑定器.所以我认为解决方案是在PropertyB之前放置一个ModelBinder属性,当然这不起作用(属性上不允许使用ModelBinder属性).我看到两个解决方案:

  1. 要在每个属性上使用动作参数而不是整个模型(我不喜欢,因为模型具有很多属性),如下所示:

    public ViewResult DoSomething(string propertyA, [ModelBinder(typeof(MyModelBinder))] propertyB)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 要创建一个新类型,可以说MyCustomType: List<int>并注册此类型的模型绑定器(这是一个选项)

  3. 也许为MyModel创建一个绑定器,覆盖BindProperty以及该属性是否"PropertyB"使用我的自定义绑定器绑定该属性.这可能吗?

还有其他解决方案吗?

c# asp.net-mvc model-binding custom-model-binder

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

将CustomParameter与Visual Studio多项目模板一起使用

我希望能够为包含以下两个项目的解决方案创建多项目模板(其中接口应包含对业务层的引用):

  • <proj_name>.interface
  • <proj_name>.business.

通常,您可以包含$safeprojectname$,其中包括:

用户在"新建项目"对话框中提供的名称

但是,正如文章中指出的构建一个多项目的可视化工作室模板

这里的问题是在每个子模板中,$ safeprojectname $代表当前项目名称.需要有一种方法从父模板传入根$ safeprojectname $.

我试图实施该解决方案在这太问题建议VS 2010多项目模板:项目间引用,通过使用CustomParameters,但我遇到了麻烦.

我的拉链模板目录如下所示:

  • MultiTemplate.vstemplate
  • 接口
    • InterfaceTemplate.vstemplate
    • MyTemplate.Interface.csproj
  • 商业
    • BusinessTemplate.vstemplate
    • MyTemplate.Business.csproj

您可以下载整个目录,但这里有一些选择的代码段

MultiTemplate.vstemplate

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="ProjectGroup">
  <TemplateData><!--Removed for brevity --></TemplateData>
  <TemplateContent>
    <CustomParameters>
      <CustomParameter Name="$SolutionName$" Value="$safeprojectname$"/>
    </CustomParameters>
    <ProjectCollection>
      <ProjectTemplateLink ProjectName="$safeprojectname$.Interface">
        Interface\InterfaceTemplate.vstemplate
      </ProjectTemplateLink>
      <ProjectTemplateLink ProjectName="$safeprojectname$.Business">
        Business\BusinessTemplate.vstemplate
      </ProjectTemplateLink>
    </ProjectCollection>
  </TemplateContent>
</VSTemplate>
Run Code Online (Sandbox Code Playgroud)

接口\ InterfaceTemplate.vstemplate

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
  <TemplateData><!--Removed for brevity --></TemplateData>
  <TemplateContent>
    <Project TargetFileName="MyTemplate.Interface.csproj" …
Run Code Online (Sandbox Code Playgroud)

visual-studio-2010 visual-studio visual-studio-templates

31
推荐指数
1
解决办法
6007
查看次数

在SSRS中复制并粘贴表(Tablix)

我有一个tablix有一天的数据,我需要在底部有相同的数据,但在3个不同的行.我想在底部复制主日表3次,然后为每个使用不同的数据集.

我尝试复制tablix并将其粘贴到Bodytablix下面,但是我收到以下错误:

报表生成器无法成功粘贴.

如何完成复制和粘贴?或者,如果那是不可能的,还有另一种方法来做我想要完成的事情吗?

这是一个动画截图:

例

reporting-services ssrs-2008 ssrs-tablix

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

在 Visual Studio Code 中自动导入 React 组件

我正在使用 JavaScript(不是 TypeScript)并使用最新的 Visual Studio Code。

我无法使组件的自动导入工作。我一直在使用steoatesAuto Import 插件,但它似乎不起作用。我最近没有看到任何关于此的说明。

是否有其他我没有发现的插件有助于自动导入 React 组件?

reactjs visual-studio-code

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

如果value为null,则在razor模板上放一个空字符串?

我有一个像下面这样的剃须刀模板.我想检查输入字段中的值是否为null,放入一个空字符串,如果@UIManager.Member.EMail有一个值,则将其值放入.我怎样才能做到这一点?

正常输入:

<input name="EMail" id="SignUpEMail" type="text" class="Input" 
       value="@UIManager.Member.EMail" validate="RequiredField" />
Run Code Online (Sandbox Code Playgroud)

剃刀语法尝试:

<input name="EMail" id="SignUpEMail" type="text" class="Input" validate="RequiredField"
       value="@(UIManager.Member == null) ? string.Empty : UIManager.Member.EMail" />
Run Code Online (Sandbox Code Playgroud)

输入字段中显示的值为:

True ? string.Empty : UIBusinessManager.MemberCandidate.EMail
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc razor

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

Bootstrap 3选择内联输入表格

我正在尝试获取输入并选择内联的选项内联,就像使用Bootstrap 2的这个演示一样.

按照Bootstrap 3指南,我设法做到这一点:

<div class="container">
    <div class="col-sm-7 pull-right well">
      <form class="form-inline" action="#" method="get">
        <div class="form-group col-sm-5">
          <input class="form-control" type="text" value="" placeholder="Search" name="q">
        </div>
        <div class="form-group col-sm-3">
          <select class="form-control" name="category">
              <option>select</option>
              <option>1</option>
              <option>2</option>
              <option>3</option>
          </select>
        </div>
        <button class="btn btn-primary col-sm-3 pull-right" type="submit">Search</button>
      </form>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

它是响应性的,但输入和选择不能没有一些讨厌的CSS黑客附加.我发现很多附带按钮的例子,但是这对select元素不起作用.

html-select twitter-bootstrap twitter-bootstrap-3

29
推荐指数
5
解决办法
15万
查看次数

电话号码验证MVC

我正在尝试使用正则表达式来验证电话号码,并在提交无效的号码或电话号码时返回错误.

MVC代码:

<ol class="row">
    <li class="cell" style="width: 20%;">Phone Number:</li>
    <li class="cell last" style="width: 60%;">
        @Html.TextBoxFor(model => model.PhoneNumber, new { @class = "textbox" }) 
        @Html.ValidationMessageFor(model => model.PhoneNumber)
    </li>
</ol>
Run Code Online (Sandbox Code Playgroud)

C#代码:

[DataType(DataType.PhoneNumber)]
[Display(Name = "Phone Number")]
[Required(ErrorMessage = "Phone Number Required!")]
[RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$",
                   ErrorMessage = "Entered phone format is not valid.")]
public string PhoneNumber { get; set; }
Run Code Online (Sandbox Code Playgroud)

但是,输入框不会向用户显示消息,表明提交的电话号码无效.

c# regex asp.net-mvc jquery-validate validationattribute

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

Visual Studio 2013可扩展性VSIX项目模板在哪里

这两篇文章都讨论了如何为VS2013开发扩展,但两者都假定您有一个可用的扩展项目类型

截至2013年11月9日,画廊中已有544个 VS2013 扩展,所以我猜它有可能,但我无法在任何地方找到模板.

vsix visual-studio-2013

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

Window.Open与PDF流而不是PDF位置

基于在新浏览器完整窗口中打开PDF的问题,看起来我可以使用JavaScript打开一个带有PDF文件的新窗口,其中包含以下代码:

window.open('MyPDF.pdf', '_blank');
Run Code Online (Sandbox Code Playgroud)

我想通过添加一个字节数组而不是文件名来从服务器返回,作为URL位置使用 window.open

目前,我正在恢复的PDF文件就像这样:

Response.Clear();
Response.ContentType = "application/pdf";
Response.BinaryWrite(pdfByteArray);
Response.Flush();
Run Code Online (Sandbox Code Playgroud)

有没有办法在javascript中打开一个带有PDF字节数组的新窗口.

像这样的东西:

var script = "window.open('" + pdfByteArray + "', '_blank');";
ScriptManager.RegisterClientScriptBlock(Parent.Page, typeof(Page), "pdf", script, true);
Run Code Online (Sandbox Code Playgroud)

.net javascript pdf asp.net window.open

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

让IIS在Intranet环境中模拟Windows用户到SQL服务器

我正在使用C#和ASP.NET MVC开发一个Intranet站点.我在一台计算机上安装了SQL Server,而在另一台计算机上运行IIS.我希望用户访问Intranet站点,而不提示用户Internet Explorer将用户Windows凭据发送到IIS,然后将这些凭据传递给sql server,这意味着sql server可以看到用户访问数据库.

我知道Kerberos双跳问题,我正试图绕过这个问题.目前我可以让IE将Windows凭据传递给IIS并进行身份验证.我只是无法让IIS将这些凭据传递给SQL Server,而是当前在应用程序池标识下运行请求,该标识设置为域服务帐户"htu\srv-htu-iis".

我的设置如下:

Web.Config中

<system.web>
    <authentication mode="Windows" />
    <authorization>
        <deny users="?" />
    </authorization>
    <identity impersonate="true" />
</system.web>
<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

连接字符串

connection string=&quot;data source=hturesbsqlp01;initial catalog=R2_Dev;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;"
Run Code Online (Sandbox Code Playgroud)

IIS身份验证设置

Anonymous Authentication = Disabled
ASP.NET Impersonation = Enabled
Forms Authentication = Disabled
Windows Authentication = Enabled
Run Code Online (Sandbox Code Playgroud)

IIS应用程序池设置

Managed Pipeline = Integrated
Identity = htu\srv-htu-iis (domain service account)
Run Code Online (Sandbox Code Playgroud)

Active Directory设置

域服务帐户htu\srv-htu-iis已设置服务主体名称,该名称将我们的站点与帐户相关联.

活动目录有

Allow Delagation to any service
Run Code Online (Sandbox Code Playgroud)

SQL Server在其自己的SQL域服务帐户下运行.

测试

我运行了以下代码测试:

System.Web.HttpContext.Current.User.Identity.Name
Run Code Online (Sandbox Code Playgroud)

这正确地返回访问该站点的用户的Windows凭据

System.Security.Principal.WindowsIdentity.GetCurrent().Name
Run Code Online (Sandbox Code Playgroud)

返回域服务帐户"htu\srv-htu-iis",这是运行应用程序池标识的内容.

任何人都可以提供我可能出错的方向吗?

sql-server authentication iis asp.net-mvc kerberos

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