小编Dan*_*iel的帖子

ASP.NET MVC Html.ValidationSummary(true)不显示模型错误

我有一些Html.ValidationSummary的问题.我不想在ValidationSummary中显示属性错误.当我设置Html.ValidationSummary(true)时,它不会显示来自ModelState的错误消息.在字符串的控制器操作中有一些异常时

MembersManager.RegisterMember(member);
Run Code Online (Sandbox Code Playgroud)

catch部分向ModelState添加错误:

ModelState.AddModelError("error", ex.Message);
Run Code Online (Sandbox Code Playgroud)

但ValidationSummary不显示此错误消息.当我设置Html.ValidationSummary(false)时,所有消息都显示,但我不想显示属性错误.我该如何解决这个问题?

这是我正在使用的代码:

模型:

public class Member
{
        [Required(ErrorMessage = "*")]
        [DisplayName("Login:")]
        public string Login { get; set; }

        [Required(ErrorMessage = "*")]
        [DataType(DataType.Password)]
        [DisplayName("Password:")]
        public string Password { get; set; }

        [Required(ErrorMessage = "*")]
        [DataType(DataType.Password)]
        [DisplayName("Confirm Password:")]
        public string ConfirmPassword { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

控制器:

[HttpPost]
public ActionResult Register(Member member)
{
    try
    {
        if (!ModelState.IsValid)
            return View();

        MembersManager.RegisterMember(member);
    }
    catch (Exception ex)
    {
        ModelState.AddModelError("error", ex.Message);

        return View(member);
    }
}
Run Code Online (Sandbox Code Playgroud)

视图:

<% using (Html.BeginForm("Register", "Members", FormMethod.Post, …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc asp.net-mvc-2-validation

187
推荐指数
5
解决办法
22万
查看次数

模拟HttpContext用于单元测试.NET核心MVC控制器?

我在控制器中有一个函数,我是单元测试,期望http请求的标头中的值.我无法初始化HttpContext,因为它只是readonly.

我的控制器函数需要"device-id"的http请求标头值

[TestMethod]
public void TestValuesController()
{
    ValuesController controller = new ValuesController();

    //not valid controller.HttpContext is readonly
    //controller.HttpContext = new DefaultHttpContext(); 

    var result = controller.Get();
    Assert.AreEqual(result.Count(), 2);
}
Run Code Online (Sandbox Code Playgroud)

没有使用第三方库,有没有直接的方法来做到这一点?

c# asp.net-mvc unit-testing asp.net-core

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

角度为2的不同页面的多个布局

我正在构建一个angular2应用程序.

我有一个登录页面 - 只有2个输入(没有标题没有页脚没有侧栏)

当用户登录时,他应该导航到包含页眉,页脚和右侧导航栏的页面.

内页中唯一改变的是右侧内容.

我有app.component

import { Component } from '@angular/core';
import {ViewEncapsulation} from '@angular/core';

@Component({
    selector: 'pm-app',
    template: `
    <div>
        <router-outlet></router-outlet>
     </div>
     `,
     styleUrls:["app/app.component.css"],
      encapsulation: ViewEncapsulation.None
})
export class AppComponent {
    pageTitle: string = 'Acme Product Management';
}
Run Code Online (Sandbox Code Playgroud)

我理解这个app.component就像母版页,您可以在其中添加页眉和页脚, <router-outlet></router-outlet>内容根据路由进行更改.

我的简单问题是如何为登录页面制作一个布局,将页眉,页脚和右栏的另一个布局设置为内页?

angular

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

自托管.NET Core控制台应用程序中的Startup.cs

我有一个自托管的.NET Core Console应用程序.

Web显示ASP.NET Core的示例,但我没有Web服务器.只是一个简单的命令行应用程序

是否可以为控制台应用程序执行此类操作?

public static void Main(string[] args)
{
    // I don't want a WebHostBuilder. Just a command line

    var host = new WebHostBuilder()
        .UseKestrel()
        .UseContentRoot(Directory.GetCurrentDirectory())
        .UseIISIntegration()
        .UseStartup<Startup>()
        .Build();

    host.Run();
}
Run Code Online (Sandbox Code Playgroud)

我想在ASP.NET Core中使用Startup.cs,但是在控制台上.

怎么样?

c# console-application .net-core

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

每次编译后第一次加载实体框架的速度都很慢

正如标题所示,我在使用实体框架对SQL Server数据库进行第一次查询时遇到问题.我试过寻找答案,但似乎没有人真正找到解决方案.

测试是在使用Entity Framework 6的Visual Studio 2012中完成的,我还使用了T4视图模板来预编译视图.该数据库位于SQL Server 2008上.我们有大约400个POCO(400个映射文件),在数据库表中只有100行数据.

捕获后是我的测试代码和结果.

static void Main(string[] args){
    Stopwatch st=new Stopwatch();
    st.Start();
    new TestDbContext().Set<Table1>.FirstOrDefault();
    st.stop();
    Console.WriteLine("First Time "+st.ElapsedMilliseconds+ " milliseconds");

    st.Reset();
    st.Start();
    new TestDbContext().Set<Table1>.FirstOrDefault();
    st.stop();
    Console.WriteLine("Second Time "+st.ElapsedMilliseconds+ " milliseconds");
}
Run Code Online (Sandbox Code Playgroud)

检测结果

First Time 15480 milliseconds
Second Time 10 milliseconds
Run Code Online (Sandbox Code Playgroud)

c# sql-server entity-framework

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

OWIN/Katana未处理的异常全局处理程序?

在Katana(OWIN)实现中实现全局异常捕获器处理程序的正确方法是什么?

在作为Azure云服务(工作者角色)运行的自托管OWIN/Katana实现中,我将此代码放在中间件中:

throw new Exception("pooo");
Run Code Online (Sandbox Code Playgroud)

然后我将此代码放在Startup类Configuration方法中,在事件处理程序中设置断点:

 AppDomain.CurrentDomain.UnhandledException += 
    CurrentDomain_UnhandledExceptionEventHandler;
Run Code Online (Sandbox Code Playgroud)

和同一个类中的事件处理程序(在第一行设置断点):

private static void CurrentDomain_UnhandledExceptionEventHandler(object sender, UnhandledExceptionEventArgs e)
{
    var exception = (Exception)e.ExceptionObject;
    Trace.WriteLine(exception.Message);
    Trace.WriteLine(exception.StackTrace);
    Trace.WriteLine(exception.InnerException.Message);
}
Run Code Online (Sandbox Code Playgroud)

代码运行时,不会触发断点.Visual Studio输出窗口确实包括此:

A first chance exception of type 'System.Exception' occurred in redacted.dll
A first chance exception of type 'System.Exception' occurred in mscorlib.dll
Run Code Online (Sandbox Code Playgroud)

我也尝试将连接和处理程序移动到Worker Role OnStart方法,但仍然没有命中断点.

我根本没有使用WebAPI,但确实查看过那里做的帖子,但我没有发现任何明确的内容,所以我在这里.

在.NET Framework 4.5.2,VS 2013上运行.

所有想法都赞赏.谢谢.

c# exception-handling asp.net-web-api owin katana

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

ExpectedException xunit .net核心

我正在为核心应用程序编写单元测试.我试图检查,我的班级抛出异常.但是ExpectedException属性会抛出编译异常:

错误CS0246找不到类型或命名空间名称'ExpectedException'(您是否缺少using指令或程序集引用?)EventMessagesBroker.Logic.UnitTests..NETCoreApp,Version = v1.0

我的代码:

[Fact]
[ExpectedException(typeof(MessageTypeParserException))]
public void TestMethod1_Error_twoMathces()
{
    var message = "some text";
    var parser = new MessageTypeParser();
    var type = parser.GetType(message);
    Assert.Equal(MessageType.RaschetStavkiZaNalichnye, type);
}
Run Code Online (Sandbox Code Playgroud)

那么,有没有正确的方法来实现这一目标?

unit-testing xunit xunit.net .net-core asp.net-core

30
推荐指数
1
解决办法
9975
查看次数

按钮单击时关闭自定义警报对话框

我无法关闭警报对话框.我正在使用布局充气器进行对话,所以我不确定在完成它之后我会怎样关闭它.代码如下:

AlertDialog.Builder dialog = new AlertDialog.Builder(AddData.this);
DialogInterface dia = new DialogInterface();

//Create a custom layout for the dialog box
LayoutInflater inflater = (LayoutInflater)AddData.this.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.add_rep_1_set, parent, false);

TextView title = (TextView)layout.findViewById(R.id.rep_1_title);
Button add_item = (Button)layout.findViewById(R.id.add_button);

add_item.setOnClickListener(new OnClickListener()
{
        @Override
        public void onClick(View v)
        {
        //Need this to close the alert dialog box
        }
});

title.setText(workout_items[position]);
dialog.setView(layout);
dialog.show();
Run Code Online (Sandbox Code Playgroud)

我无法调用完成,因为它关闭了启动警报对话框的列表视图,并且对我无法使用dialog.dismiss调用.

您认为我应该怎么做才能解决这个问题?

android android-alertdialog

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

以下项目没有有效的ProjectGuid,并且没有使用有效的解决方案(.sln)构建,因此将从分析中跳过

当您使用SonarQube构建dotnet核心项目时,您可能会在日志中遇到错误:

警告:以下项目没有有效的ProjectGuid,并且没有使用有效的解决方案(.sln)构建,因此将从分析中跳过...

你该怎么办?

sonarqube .net-core

23
推荐指数
3
解决办法
8415
查看次数

在首次加载之前通过授权服务器保护SPA

我正在使用dotnet core 2.1中的角度SPA应用程序的"新"项目模板,如文章中所述使用Angular项目模板和ASP.NET Core.

但是这篇文章没有提到保护SPA本身的任何内容.我找到的所有信息都是关于保护WEBAPI,但首先我对保护SPA感兴趣.

这意味着:当我打开我的SPA时,例如https:// localhost:44329 /我希望立即重定向到授权服务器,而不是单击某个将执行身份验证的按钮.

背景:

  • 我必须确保只有经过身份验证的用户才能看到SPA.
  • 我想使用授权代码授权从我的授权服务器获取刷新令牌.
  • 我不能使用隐式授权,因为刷新令牌不能在浏览器上保持私有

当前的方法是实施需要经过身份验证的用户的MVC策略.但这只能应用于MVC控制器.这就是我添加HomeController以满足第一个请求的原因.

见项目结构:

在此输入图像描述

我的Startup.cs:

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthentication(options =>
        {
            options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            options.DefaultChallengeScheme = "CustomScheme";
        })
        .AddCookie()
        .AddOAuth("CustomScheme", options =>
        {
            // Removed for brevity
        });

    services.AddMvc(config =>
    {
        // Require a authenticated user
        var policy = new AuthorizationPolicyBuilder()
            .RequireAuthenticatedUser()
            .Build();
        config.Filters.Add(new AuthorizeFilter(policy));
    });

    // In production, the …
Run Code Online (Sandbox Code Playgroud)

c# .net-core asp.net-core angular

20
推荐指数
3
解决办法
4395
查看次数