我有一些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) 我在控制器中有一个函数,我是单元测试,期望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)
没有使用第三方库,有没有直接的方法来做到这一点?
我正在构建一个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>内容根据路由进行更改.
我的简单问题是如何为登录页面制作一个布局,将页眉,页脚和右栏的另一个布局设置为内页?
我有一个自托管的.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,但是在控制台上.
怎么样?
正如标题所示,我在使用实体框架对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) 在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上运行.
所有想法都赞赏.谢谢.
我正在为核心应用程序编写单元测试.我试图检查,我的班级抛出异常.但是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)
那么,有没有正确的方法来实现这一目标?
我无法关闭警报对话框.我正在使用布局充气器进行对话,所以我不确定在完成它之后我会怎样关闭它.代码如下:
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调用.
您认为我应该怎么做才能解决这个问题?
当您使用SonarQube构建dotnet核心项目时,您可能会在日志中遇到错误:
警告:以下项目没有有效的ProjectGuid,并且没有使用有效的解决方案(.sln)构建,因此将从分析中跳过...
你该怎么办?
我正在使用dotnet core 2.1中的角度SPA应用程序的"新"项目模板,如文章中所述使用Angular项目模板和ASP.NET Core.
但是这篇文章没有提到保护SPA本身的任何内容.我找到的所有信息都是关于保护WEBAPI,但首先我对保护SPA感兴趣.
这意味着:当我打开我的SPA时,例如https:// localhost:44329 /我希望立即重定向到授权服务器,而不是单击某个将执行身份验证的按钮.
背景:
当前的方法是实施需要经过身份验证的用户的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# ×5
.net-core ×4
asp.net-core ×3
angular ×2
asp.net-mvc ×2
unit-testing ×2
android ×1
katana ×1
owin ×1
sonarqube ×1
sql-server ×1
xunit ×1
xunit.net ×1