在mvc3中动态渲染div中的局部视图

时间:2013-07-01 08:11:07

标签: asp.net-mvc-3

我有一个链接按钮列表(l1,l2,l3..etc)和一个固定的div区域。当我点击l1时,例如partialview1将在div中填充,当我点击l2时,例如partialview2将填充在同一个内div替换现有的partialview1.Each局部视图有不同的模型。 我的代码如下:SettingsMaster.cshtml

@{
    ViewBag.Title = "ManageSettings";
    Layout = "~/Views/Shared/_AdminLayout.cshtml";
}
@section JavaScript
{
    <script type="text/javascript" src="@Url.Content("/Scripts/SettingsCustomScript.js")"></script>
}
<h2>ManageSettings</h2>
@Html.ActionLink("Area", null, null, null, new {@id="Area", @style = "text-transform:capitalize;" })
@Html.ActionLink("Subarea", null, null, null, new {@id="SubArea", @style = "text-transform:capitalize;" })

<div id="Datadisplay"></div>

Java脚本代码:自定义Javascript文件

/// <reference path="jquery-1.8.3.js" />
/// <reference path="jquery-1.5.1-vsdoc.js" />

$(document).ready(function () {

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


        $("#Datadisplay").load('/Settings/GetArea', null, function (response, status, xhr) {

            if (status == "error") {

                alert("An error occured");
            }

            return false;

        });





    });

    $("#Subarea").click(function () {
        alert("hello");

    }

    );

控制器方法:

public class SettingsController : Controller { // // GET: /Settings/
[HttpGet]
    public ActionResult ManageSettings()
    {
        return View();
    }

    [HttpGet]
    public ActionResult GetArea()
    {
        return PartialView("GetArea");

    }


}

但是在渲染时它正在调用ManageSettings(),这就是它没有显示的原因。 Plz帮我做什么

2 个答案:

答案 0 :(得分:0)

我在堆栈溢出的另一篇文章中读到了这个,它对我有用

视图中的

    @model Tuple<IEnumerable<Model1name>,Model2name>
    @foreach (var item in Model.Item1)
    {
        @item.Name
    }

在控制器中:

    var tuple = new Tuple<IEnumerable<Model1name>, Model2name>(context.Model1name.ToList(), new Model2name());
    return View(tuple); 

答案 1 :(得分:-1)

使用简单的jquery调用。

点击你的链接按钮,你就可以获得$ .Get(...)并渲染你的控制器返回的部分视图