Asp.net mvc 4 在MVC4中提交后重定向到登录页面

Asp.net mvc 4 在MVC4中提交后重定向到登录页面,asp.net-mvc-4,redirect,login,simplemembership,Asp.net Mvc 4,Redirect,Login,Simplemembership,提交此视图的操作后-浏览器重定向到登录页面 即使对于经过身份验证的用户 mvc4-vs2012-simplemembership 视图: 您的代码中有一个错误。隐藏字段ArticleId不能转换为int,因为它为null。此错误消息被try-catch块吞没,您没有注意到和/或收到通知。一旦解决了这个问题,您仍然可能会遇到其他问题。我建议在调试时删除try-catch。我还建议检查ModelState以确保其有效,例如在保存之前确保输入了所有字段。我在ActionResult CreateCom

提交此视图的操作后-浏览器重定向到登录页面

即使对于经过身份验证的用户

mvc4-vs2012-simplemembership

视图:


您的代码中有一个错误。隐藏字段ArticleId不能转换为int,因为它为null。此错误消息被try-catch块吞没,您没有注意到和/或收到通知。一旦解决了这个问题,您仍然可能会遇到其他问题。我建议在调试时删除try-catch。我还建议检查ModelState以确保其有效,例如在保存之前确保输入了所有字段。

我在ActionResult CreateComment Controller的第一行定义中添加了一个断点,我意识到程序不会重定向到Comment Controller!!您的控制器是否具有任何类型的授权/身份验证筛选器,以阻止用户访问此方法?您可以在控制器和/或操作级别指定筛选器。。。看起来可能是[Authorize]。有东西正在拦截HTTP POST并确定用户必须登录。这通常由控制器/动作过滤器完成。你能发布更多的申请代码吗?
....
@using (Html.BeginForm("Create", "Comment"))
{
    <fieldset> 
        <div class="container">
            <div class="row-fluid">
                <div class="span8">
                    @if (WebSecurity.IsAuthenticated)
                    {
                        <div class="iran text-success">
                            <i class="icon-user"></i>
                            username:<span>@WebSecurity.CurrentUserName</span>
                        </div>
                        <div class="">
                            <input type="hidden" name="ArticleId" />
                        </div>
                        <div class="controls">
                            @Html.TextArea("Description", new { @Class = "span6", @Rows = 4 })
                        </div>
                        <div class="controls">
                            <span class="span4">
                                <p>
                                    <input type="submit" class="btn btn-primary" value="submit comment" />
                                </p>
                            </span>
                        </div>
                    }
                    else
                    {
                        <div class="iran">
                            @Html.ActionLink("you must first log in", "LoginUser", "Account")
                        </div>
                    }
....
[HttpPost]
public ActionResult Create(FormCollection form)
{
    try
    {    
        var ins = new Comment();
            ins.Description = form["Description"];
            ins.ArticleId = Convert.ToInt16(form["ArticleId"]);
            ins.DateSend = Shamsi();
            ins.TimeSend = DateTime.Now.ToString("HH:mm:ss");
            ins.UserId = WebSecurity.CurrentUserId;
            bank.Comments.InsertOnSubmit(ins);
            bank.SubmitChanges();

        return RedirectToAction("Index","Home");
    }
    catch { return null;}
}