的代碼片段會向您提供無法編譯。您必須從所有代碼路徑返回結果。嘗試是這樣的:
public ActionResult Visit()
{
int visit = 0;
if (base.IsLoggedIn() == true)
{
visit++;
return PartialView();
}
else
{
return RedirectToAction("ACTION_NAME_GOES_HERE");
}
}
UPDATE:
我相信我現在明白你要完成的任務。如果ajax請求由未登錄的用戶發出,您希望瀏覽器重定向用戶。我建議修改你的操作方法如下:
public ActionResult Visit()
{
int visit = 0;
if (base.IsLoggedIn())
{
visit++;
// whatever else needs to be done
return PartialView();
}
else
{
// Note that this could be done using the Authorize ActionFilter, using
// an overriden Authorize ActionFilter, or by overriding OnAuthorize().
if (!base.IsLoggedIn())
return new HttpUnauthorizedResult();
}
}
假設你在你的web.config配置了,響應將是302重定向這是不是你在這種情況下想要的東西。見菲爾哈克的博客文章,說明此項ASP.NET行爲如何防止和401未授權的響應可以返回:
http://haacked.com/archive/2011/10/04/prevent-forms-authentication-login-page-redirect-when-you-donrsquot-want.aspx
然後,假設你使用jQuery發出AJAX請求,您可以處理401響應:
$.ajax({
url: '/your_controller/visit',
type: 'GET',
statusCode: {
200: function (data) {
// data = your partialview
},
401: function (data) {
location.href = '/the_path/to_redirect/to';
}
}
});
並非所有的代碼路徑都返回結果。用戶登錄時應該發生什麼? – Pieter
不明白正在問什麼。 – RayLoveless