有时当我启动我的MVC 3项目时,它会尝试为正在呈现的视图加载完全限定的URL,而不是控制器中的操作(这给了我404错误).其他时候它工作正常,实际上按照预期的方式击中控制器动作,但它大约是50/50.
它有时会点击的URL是: http://localhost:xxxx/Views/Account/LogOn.cshtml
以下是Global.asax文件中的默认路由设置:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Account", action = "LogOn", id = UrlParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
我也尝试从路由中删除/ {id}参数,因为我觉得登录屏幕不需要它.
有任何想法吗?目前,该项目设置非常简单,使用AccountController中的默认操作方法LogOn等.我唯一做的就是更改global.asax文件中的控制器和操作.
作为MVC 3和EF的新手,我正在努力了解为我的公司开发应用程序的最佳架构方法.该应用程序将是一个大型应用程序,可能同时处理数百个用户,所以我想确保我理解并遵循正确的程序.到目前为止,我已经确定一个简单的存储库模式(例如Controller - > Repository - > EF)方法是最好和最容易实现的,但我不确定这是否是最好的做事方式.应用程序基本上会返回在devexpress网格中向用户显示的数据,并且可以修改此数据/添加到其中等.
我发现这篇文章,这对我来说相当混乱,所以我想知道是否有任何理由尝试使用断开连接的EF以及为什么你甚至想要这样做:http://www.codeproject .COM /用品/ 81543 /最后的实体框架-工作-在-全disconne?味精= 3717432#xx3717432xx
总结一下我的问题:
注意:存储库实现IDisposable并具有下面列出的dispose方法.它在存储库构造函数中创建实体上下文的新实例.
用法示例:
控制器(使用自定义成员资格提供程序登录):
if (MembershipService.ValidateUser(model.UserName, model.Password))
{
User newUser = new User();
using (AccountRepository repo = new AccountRepository())
{
newUser = repo.GetUser(model.UserName);
...
}
}
Run Code Online (Sandbox Code Playgroud)
成员资格提供者ValidateUser:
public override bool ValidateUser(string username, string password)
{
using (AccountRepository repo = new AccountRepository())
{
try
{
if (string.IsNullOrEmpty(password.Trim()) || string.IsNullOrEmpty(username.Trim()))
return false;
string hash = FormsAuthentication.HashPasswordForStoringInConfigFile(password.Trim(), "md5");
bool exists = …Run Code Online (Sandbox Code Playgroud)