簡體   English   中英

Ajax.BeginForm局部視圖替換整個頁面

[英]Ajax.BeginForm partial view replace whole page

我在我的MVC應用程序中遇到了一些問題,當我使用按鈕(提交)時一切正常但是如果我使用onchange ,在同一個窗口中打開的局部視圖沒有替換任何div,我使用我在這里看到的所有方法,但沒有任何幫助,這里所有代碼(任何不能正常工作)。 為什么會發生?

控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        List<string> Year = new List<string>();
        Year.Add("1");
        Year.Add("2");
        Year.Add("3");
        Year.Add("4");
        ViewBag.Years = new SelectList(Year);
        return View();
    }
 public PartialViewResult testt()
    {
        return PartialView();
    }
    [HttpPost]
public PartialViewResult testTwo()
        {
            return PartialView();
        }
}

查看(我在我的頁面上包括所有腳本不顯眼的ajax,microsoft ajax,jquery和許多其他):

<script src="~/Scripts/respond.min.js"></script>
<script src="~/Scripts/_references.js"></script>
<script src="~/Scripts/bootstrap.js"></script>
<script src="~/Scripts/jquery-1.10.2.intellisense.js"></script>
<script src="~/Scripts/jquery-1.10.2.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="~/Scripts/jquery.validate-vsdoc.js"></script>
<script src="~/Scripts/jquery.validate.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.js"></script>
<script src="~/Scripts/MicrosoftAjax.debug.js"></script>
<script src="~/Scripts/MicrosoftAjax.js"></script>
<script src="~/Scripts/MicrosoftMvcAjax.js"></script>
<script src="~/Scripts/MicrosoftMvcValidation.js"></script>
<script src="~/Scripts/modernizr-2.6.2.js"></script>
<script src="~/Scripts/respond.js"></script>
@using (Ajax.BeginForm("testt", new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "testDiv", InsertionMode = InsertionMode.Replace }))

{
<div>
    <div >
       @Html.DropDownList("UnitsNames", (SelectList)ViewBag.Years, new { onchange = "$(this.form).onsubmit()" })
    </div>
    <div >
        @Html.DropDownList("Years", (SelectList)ViewBag.Years, new { onchange = "$(this.form).submit()" })
    </div>
    <div>
        @Html.DropDownList("Years", (SelectList)ViewBag.Years, new { onchange = "this.form.submit()" })
    </div>
    <div>
               @Html.DropDownList("Years", (SelectList)ViewBag.Years, new { onchange = "this.form.onsubmit()" })
    </div>
</div>
}

@using (Ajax.BeginForm("testTwo", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "testDiv", InsertionMode = InsertionMode.Replace }))

{
<div>
    <div>
        @Html.DropDownList("Years", (SelectList)ViewBag.Years, new { onchange = "$(this.form).onsubmit()" })
    </div>
    <div>
        @Html.DropDownList("Years", (SelectList)ViewBag.Years, new { onchange = "$(this.form).submit()" })
    </div>
    <div>
        @Html.DropDownList("Years", (SelectList)ViewBag.Years, new { onchange = "this.form.submit()" })
    </div>
    <div>
        @Html.DropDownList("Years", (SelectList)ViewBag.Years, new { onchange = "this.form.onsubmit()" })
    </div>
</div>
}

<br>
<div id="testDiv">
    <h4>here i need a partial view</h4>
</div>

謝謝!

你必須包括

@section scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

這在你的頁面中,否則它將無法正常工作。 嘗試這樣,而不是腳本標記。

在第二個Ajax表單中,方法是POST,但是您沒有使用HttpPost屬性定義任何Action方法

 @using (Ajax.BeginForm("testt", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "testDiv", InsertionMode = InsertionMode.Replace }))

像下面一樣添加HttpPost

[HttpPost]
public PartialViewResult testt()
    {
        return PartialView();
    }

我遇到過同樣的問題。 我正在使用Visual Studio 2015,所以我只是簡單地更新了所有NuGet包,代碼開始按預期工作。

希望這可以幫助。

我有同樣的問題。 我注意到如果腳本包含在不同的頁面中,則腳本不起作用。

在_layout頁面中添加腳本

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")"></script>

並從不需要它的地方刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM