在MVC的基本控制器中,我有以下注入代码,它工作得很好.
[Inject]
private INavigationRepository navigationRepository { get; set; }
[Inject]
private ISessionService sessionService { get; set; }
Run Code Online (Sandbox Code Playgroud)
我没有出现构建错误,它在"死亡黄页"中显示为"System.NullReferenceException:对象引用未设置为对象的实例".并指向引用navigationRepository的第一行代码.
我可能很少有代码更改,因为它工作,甚至支持这些更改但仍然得到错误.我可以用下面的代码解决它,但我失去注射.有关如何解决这个问题的任何想法?
private INavigationRepository navigationRepository;
private ISessionService sessionService;
public BaseController()
{
navigationRepository = new NavigationRepository();
sessionService = new SessionService(new VolunteerRepository());
}
Run Code Online (Sandbox Code Playgroud) 我正在使用部分视图进行登录,并希望在成功时将用户重定向到新页面,如果模型无效,则在部分视图中显示验证错误.ajax目标正在更新并成功或失败.如果模型有效,它将在更新目标中显示整个新页面,但我希望它重定向到新页面.我已经尝试过Redirect和RedirecttoAction,但它没有获得所需的结果.任何有关我可以去的想法都会获得ajax更新以重定向到新页面,而不是更新目标.另外,如果我使用错误的方法,请告诉我.
部分查看代码:
<% using (Ajax.BeginForm(
"LogOn",
null,
new AjaxOptions {
HttpMethod = "POST",
UpdateTargetId = "SignInForm"
},
new {
id = "SignInForm", ReturnUrl = Request.QueryString["ReturnUrl"]
})) { %>
<<Page HTML Controls>>
<input type="submit" value="Log On" />
<% } %>
Run Code Online (Sandbox Code Playgroud)
这是相关的控制器代码:
public ActionResult Logon(LogOnModel model,string returnUrl)
{
if (ModelState.IsValid)
{
//Login Logic Code
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "App");
}
}
// If we got this far, something failed, redisplay form
if (Request.IsAjaxRequest())
return PartialView("LogOnControl");
return …Run Code Online (Sandbox Code Playgroud) 我在现有的MVC 2应用程序中实现Ninject依赖注入,该应用程序使用所有控制器继承的基本控制器来设置母版页所需的导航和其他信息.当我将控制器设置为从基本控制器继承时,我收到以下错误:"... BaseController'不包含带0参数的构造函数.如何解决此错误?我是Ninject的新手并且可以'弄清楚这一点.
public class BaseController : Controller
{
private INavigationRepository navigationRepository;
private ISessionService sessionService;
public BaseController(INavigationRepository navigationRepository, IMembershipService membershipService, ISessionService sessionService)
{
this.navigationRepository = navigationRepository;
this.sessionService = sessionService;
}
}
public class HomeController: BaseController
{ ... }
Run Code Online (Sandbox Code Playgroud) 我正在将项目从MVC 2迁移到MVC3和剃刀视图引擎.
在MVC 2中,我将有以下html:
<div id="del_<%= Model.ActivityID.ToString() %>"></div>
Run Code Online (Sandbox Code Playgroud)
使用razor时,我尝试了以下操作,当我想要del_1时,它会呈现文字文本"del_@Model.ActivityID.ToString()".
<div id="del_@Model.ActivityID.ToString()"></div>
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我使用了:
<div id="@Model.ActivityID.ToString()_del"></div>
Run Code Online (Sandbox Code Playgroud)
是否有使用这种语法使剃须刀工作?
<div id="del_@Model.ActivityID.ToString()"></div>
Run Code Online (Sandbox Code Playgroud) 我试图获取用户的上次登录日期,如果不存在登录记录,则返回今天的日期.到达那里我需要一些帮助.我收到以下错误,甚至没有默认值组件.
无法将类型'System.Linq.IQueryable'隐式转换为'System.DateTime?'
DateTime? logdate = from userlog in
(from userlog in db.UserLogEntities
where
userlog.UserID == 1 &&
userlog.Action == "Logon" &&
userlog.ActionTag == "Success"
select new
{
userlog.LogDate,
Dummy = "x"
})
group userlog by new { userlog.Dummy } into g
select new
{
Column1 = (DateTime?)g.Max(p => p.LogDate)
};
Run Code Online (Sandbox Code Playgroud)