使用JQuery渲染部分视图时遇到问题

时间:2013-02-06 13:58:01

标签: asp.net asp.net-mvc asp.net-mvc-3 razor asp.net-mvc-4

我有一个像下面这样的区域。

enter image description here

以下是Controller操作。

[HttpGet]
public ActionResult Index_partial()
{
    return PartialView("_PartialPage1");
}

[HttpGet]
public ActionResult Index()
{
    AdminModule model = new AdminModule();
    model.MyName = "My Name";
    return View("Index", model);
}

查看

@model _1.Areas.Admin.Models.AdminModule
@{
    ViewBag.Title = "Index";
    Layout = "~/Areas/Admin/Views/Shared/_LayoutPage1.cshtml";
}
<h2>
    Index</h2>
<script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript">
</script>
<script type="text/javascript" src="/scripts/jquery.unobtrusive-ajax.js">
</script>
<div id="myForm">
    @using (Html.BeginForm())
    {
        <p id="pid">
        </p>
        <input onclick="ClickHere();" type="submit" value="Button" />
    }
    <script language="javascript" type="text/javascript">
        function ClickHere() {
        debugger;
            var url = '@Url.Action("Index_partial", "Admin")';
            $('#p').load("@Url.Action("Index_partial", "Admin")");
        }

    </script>
</div>

===================================

部分视图

@model _1.Areas.Admin.Models.AdminModule
@using (Ajax.BeginForm("Index", "Admin", 
             new AjaxOptions { UpdateTargetId = "myForm", HttpMethod = "Post" }))
{
    @Html.LabelFor(i => i.MyName)
    @Html.TextBoxFor(i => i.MyName)
    @Html.ValidationMessageFor(i => i.MyName)
    <p id="getDateTimeString">
    </p>
    <input type="submit" value="Click here" id="btn" />
}

=====================================

在视图中,我有一个按钮,点击它时应该在

中渲染部分视图
<p id="pid"></p>

问题是 - 点击按钮将页面导航到部分视图,它应该在p标签中呈现部分视图Html。怎么做?

5 个答案:

答案 0 :(得分:2)

  1. 删除@using (Html.BeginForm())
  2. 为您的按钮添加ID
  3. < input onclick="ClickHere();" type="submit" id="Button" value="Button" />
    
    1. 将您的点击事件重新分配给不引人注目的而不是内联的:
    2. $('#Button').click(function(){
             debugger;
                  var url = '@Url.Action("Index_partial", "Admin")';
                  $('#p').load("@Url.Action("Index_partial", "Admin")");
              }
      
      1. 更改您的返回部分
      2. return PartialView("_PartialPage1");
        

答案 1 :(得分:1)

删除@using (Html.BeginForm())并添加以下HTML:

<p id="pid"></p>

<button type="button" id="mybtn">Load partial view</button>

然后,添加一点jQuery:

(function() {
    $('#mybtn').click(function() {
        $.ajax({
            url: '@Url.Action("Index_partial", "Admin")',
            type: 'GET',
            cache: false,
            success: function(result) {
                $('#pid').empty().html(result);
            }
        });
    });
});

答案 2 :(得分:0)

控制器:

[HttpGet]
public ActionResult Index_partial()
{
    return PartialView("_PartialPage1");
}

在view / javascript中。

<script language="javascript" type="text/javascript">
    function ClickHere() {
        $.ajax({
        url: "@Url.Action(MVC.Admin.Index_partial())",
        async: false,
        data: { },
        success: function(data) {
            $("#pid").empty();
            $("#pid").html(data);
        }
    });
    }
</script>

我使用T4MVC生成网址。

希望这有帮助。

答案 3 :(得分:0)

家庭控制器:

[HttpGet]
public ActionResult PartialView()
{
   return this.PartialView("PartialView");
}

查看

<script type="text/javascript">

    $(document).ready(function () {

        $("#btnSubmit").click(function() {

            $("#renderedHtml").load('Home/PartialView');

        });

    });

</script>


    <div id="renderedHtml"></div>
    <input type="submit" value="Get Partial" id="btnSubmit" />

答案 4 :(得分:0)

查看应该是这样的......

<div id="myForm">
    <p id="pid">
    </p>
</div>
<input id="BTN" type="submit" value="Button" />
<script language="javascript" type="text/javascript">
    $('#BTN').click(function(){
        $('#pid').load("@Url.Action("Index_partial", "Admin")");
    });
</script>