当ajax操作为[Authorize]时,登录页面显示UpdateTargetId内部

时间:2013-07-15 04:22:56

标签: jquery c#-4.0 asp.net-mvc-4

我有一个AJAX表格&与该表单对应的操作方法。我希望这个表格保留[授权]。

AJAX表格:

     @using (Ajax.BeginForm("Vote", "Rate", null ,
                       new AjaxOptions
                           {
                               InsertionMode = InsertionMode.Replace,
                               HttpMethod = "GET",
                               OnFailure = "searchFailed",
                               LoadingElementId = "ajax-loader",
                               UpdateTargetId = "searchresults",
                           },new { id = "voteForm" }))
                {
                <input type="radio" name="Stars" value="1">
                <input type="radio" name="Stars" value="2">
                <input type="radio" name="Stars" value="3">
                <input type="submit" value="Vote" />
                }

授权行动

    [Authorize]
    public ActionResult Vote(Rate rate)
    {

            if (ModelState.IsValid)
            {
                db.Rates.Add(rate);
                db.SaveChanges();

            }

    return PartialView("_Vote");

       }

当我点击提交按钮时,登录页面显示在UpdateTargetId(搜索结果)中,但它需要在新窗口中显示。

1 个答案:

答案 0 :(得分:0)

这是因为您正在执行Ajax操作,所有结果都将反映在UpdateTargetId内。

因此,您应该使用来自服务器的responseText检查用户在OnFailureOnSuccess方法中未经授权的特定情况,并使用javascript将用户重定向到登录页面,即

location.href = '/login';