是否可以在禁用Java脚本时使用AJAX帮助程序方法更新部分视图/ <div> </div>

时间:2014-06-20 12:57:37

标签: javascript asp.net-mvc asp.net-mvc-4 asp.net-ajax

我知道发布了一个非常相似的问题并且已经发布了: How to gracefully handle AJAX PartialView update when Javascript is disabled

但那个解决方案并不令我满意。

是否可以在禁用Java Script时使用Ajax Helper方法更新Element,它是否会在同一页面中显示部分视图而不是在额外的选项卡中?

当我点击AJAX ActionLink时,我希望使用部分视图(_Details)更新索引视图中的标记。 使用PView 1方法,我在启用和禁用JS时获得相同的结果。但是我不赞成PView 1解决方案(如类似问题所示),因为这会使Partial View类无用。无论如何,当我重新加载孔页时,为什么还需要它。 我更喜欢类似于PView 2的解决方案。但是当禁用JS时,部分视图会在新的Tab中打开。

到目前为止我的简化代码:

HomeController Class

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var obj_str = new SimpleString { astr = "Nothing Yet" };
        return View(obj_str);
    }

    public ActionResult PView1()
    {
        string str_posted = "String of PView 1";
        var obj_str = new SimpleString {astr = str_posted};

        if (Request.IsAjaxRequest())
        {
            return PartialView("_Details", obj_str);
        }else
        {
            return View("Index", obj_str);
        }
    }

    public PartialViewResult PView2()
    {
        var obj_str = new SimpleString {astr = "String of PView 2"};
        return PartialView("_Details", obj_str);
    }
}

Index.cshtml

<h2>AJAX Actionlink Index</h2>
@Ajax.ActionLink("Click me for PView 1", "PView1", new AjaxOptions
{
    UpdateTargetId = "partv",
    InsertionMode = InsertionMode.Replace,
    HttpMethod = "GET"
})

@Ajax.ActionLink("Click me for PView 2", "PView2", "Home", new AjaxOptions
{
    UpdateTargetId = "partv",
    InsertionMode = InsertionMode.Replace,
    HttpMethod = "GET"
})

<h3>Partial View here!</h3>                     
<div id="partv">
    <p>@Model.astr</p>
</div>

_Details.cshtml(部分视图)

@model MVCPartialViewTest.Models.SimpleString
<p>This is from the Partial View cshtml</p>
<p>@Model.astr</p>

SimpleString类(模型)

public class SimpleString
{
    public string astr { get; set; }
}

0 个答案:

没有答案