相关疑难解决方法(0)

为什么Ajax.BeginForm取代了我的整个页面?

上下文:Asp.Net MVC3 w/Razor

我试图在Razor布局(以前的母版页)上放置一个登录表单,这样,当用户超时时,可以提示他/她登录而不被重定向(如在RallyDev中).因此,我在Ajax.BeginForm中创建了一个部分_LogOn.cshtml,其中包含所有必需的东西(用户名等),其中UpdateTargetId指向一个div,该div包含ajax表单内的登录控件.表单回发到AccountsController.RefreshLogOn操作,但显然,包含的页面可能是从不同的控制器呈现的.RefreshLogOn操作返回PartialView("_ LogOn").在任何情况下,我的期望/愿望是只替换此div中的控件.相反,我的页面位置更改为/ Accounts/RefreshLogon,整个页面被部分替换.我应该采取另一种方法吗?

这是相关的代码:

_LogOn.cshtml

 @{
        using (Ajax.BeginForm("RefreshLogOn", "Accounts", 
            new AjaxOptions { 
                      OnSuccess = "logonSucceeded", 
                      OnFailure = "logonFailed",         
                      HttpMethod = "Post", 
                      UpdateTargetId = "user-info" }, 
            new { @id = "refresh"}))
        {  
        @Html.AntiForgeryToken()

       <div id="user-info">
                <p>Your session has expired.</p>
            <div class="error">@Html.ValidationSummary()</div>
            <table>
                <tr>
                    <td>Username:</td>
                    <td>@Html.TextBoxFor(model => model.UserName)</td>
                </tr>
                <tr>
                    <td>Password:</td>
                    <td>@Html.PasswordFor(model => model.Password)</td>
                </tr>
                <tr>
                    <td>Remember Me:</td>
                    <td>@Html.CheckBoxFor(model => model.RememberMe)</td>
                </tr>

            </table>
        </div>
            }
        }
Run Code Online (Sandbox Code Playgroud)

AccountsController

public ActionResult RefreshLogOn (LogOnModel model)
{
    if (ModelState.IsValid)
    {
        if (MembershipService.ValidateUser(model.UserName, model.Password)) …
Run Code Online (Sandbox Code Playgroud)

jquery asp.net-mvc-3

35
推荐指数
2
解决办法
3万
查看次数

为什么UnobtrusiveJavaScriptEnabled = true禁用我的ajax工作?

我正在使用MVC3剃刀做一个样本,并写道:

<p>
    Show me the time in:
    @Ajax.ActionLink("UTC", "GetTime", new { zone = "utc" }, new AjaxOptions { UpdateTargetId = "myResults" })
    @Ajax.ActionLink("BST", "GetTime", new { zone = "bst" }, new AjaxOptions { UpdateTargetId = "myResults" })
    @Ajax.ActionLink("MDT", "GetTime", new { zone = "mdt" }, new AjaxOptions { UpdateTargetId = "myResults" })
</p>
<div id="myResults" style="border: 2px dotted red; padding: .5em;">
    Results will appear here
</div>
<p>
    This page was generated at @DateTime.UtcNow.ToString("h:MM:ss tt") (UTC)
</p>
Run Code Online (Sandbox Code Playgroud)

在web.config中更改此密钥之前,我的所有ajax调用都不起作用:

<add key="UnobtrusiveJavaScriptEnabled" value="true"/> …
Run Code Online (Sandbox Code Playgroud)

ajax asp.net-mvc asp.net-mvc-ajax razor asp.net-mvc-3

32
推荐指数
1
解决办法
3万
查看次数

如何在ASP.NET MVC 3中将Razor View渲染为字符串?

我一直在搜索网站,但我能找到的只是如何渲染部分控件.ascx或依赖于控制器上下文的示例.

我想要一个方法,使我能够提供视图的相对路径和模型,并将该模型的视图呈现为字符串:

string result = Utility.RenderViewToString("~/Views/My/Profile.cshtml", model);
Run Code Online (Sandbox Code Playgroud)

我能找到的所有例子都是旧版本的MVC,或者根本就没有做我需要做的事情.

c# asp.net-mvc razor asp.net-mvc-3

27
推荐指数
4
解决办法
3万
查看次数

标签 统计

asp.net-mvc-3 ×3

asp.net-mvc ×2

razor ×2

ajax ×1

asp.net-mvc-ajax ×1

c# ×1

jquery ×1