从JQuery渲染局部视图

时间:2013-03-05 09:18:11

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

我是一名桌面开发人员,我正在使用C#自学ASP.NET MVC3(还不能使用MVC4 ......)。因为这个原因,我正在拼凑一些小的假项目。在这个项目中,我使用DropDownListFor和电影类别(我们都知道这个例子对吗?)。但是因为这个教程太快了我想尝试做一些更简单的事情。

我的模特:

public class MovieModel {

    public int SelectedCategorieID { get; set; }

    public List<CategorieModel> Categories { get; set; }

    public MovieModel() {
        this.SelectedCategorieID = 0;
        this.Categories = new List<CategorieModel>() {new CategorieModel {ID = 1,
            Name = "Drama"},
        new CategorieModel {ID = 2,
            Name = "Scifi"}};
    }
}

public class CategorieModel {
    public int ID { get; set; }
    public string Name { get; set; }
}

请参阅?非常简单。我有一个强类型视图,我可以使用这个模型:

@model MvcDropDownList.Models.MovieModel (1st line of Index.cshtml).

当调用Home控制器的默认操作时,模型将被填充:

    public ActionResult Index() {

        ViewBag.Message = "Welcome to ASP.NET MVC!";

        Models.MovieModel mm = new Models.MovieModel();

        return View(mm);
    }

到目前为止一切顺利。没问题。现在我想向用户显示它在部分视图中选择的类别的ID,不显眼的ajax ...因为我没有让它工作,我开始更小。暂时忘记DrowpdownList。我目前只有这个按钮:

<input type="button" value="Minicart test" onclick="categoryChosen();" />

这个div:

<div id="minicart">
    @Html.Partial("Information")
</div>

迷你车的东西来自另一个教程,我道歉。不要让它分散你的注意力。

这个javascript:

function categoryChosen() {
    var url = "Home/CategoryChosen/" + "2";
    $.post(url, function (data) {
        debugger;
        $("#miniCart").html(data);
    });
}

从我之前尝试让它发挥作用,2确实是可靠的。最终我希望那是可变的...

调用此操作:

    [AcceptVerbs("POST")]
    public ActionResult CategoryChosen(string SelectedCategorieID) {

        ViewBag.messageString = "2";

        return PartialView("Information");

    }
是的,你看得对。我只是为我的测试插入2。因为就像我说的那样,无法让它发挥作用。部分视图信息如下所示:

@{
    ViewBag.Title = "Information";
}

<h2>Information</h2>
<h2>You selected: @ViewBag.messageString</h2>

所以,现在是一个大问题。我期望部分视图呈现:“你选择了:2”。当我调试javascript并查看变量'data'中的内容时,我甚至会看到这一点。任何人都可以帮助我为什么它不渲染2?然后我可以继续教自己这些东西。非常感谢您提前帮助。如果您遗漏任何信息,请不要犹豫。

2 个答案:

答案 0 :(得分:1)

我认为问题是拼错了minicart div的id。您的ID不包含任何大写字母,但您的选择器包含大写字母。所以相反$(“#miniCart”)你应该使用$(“#minicart”)它会起作用。

答案 1 :(得分:0)

像这样做并检查它是否有效

function categoryChosen() {
    var url = "Home/CategoryChosen?SelectedCategorieID=" + "2";
    $.post(url, function (data) {
        debugger;
        $("#miniCart").html(data);
    });
}

考虑到您没有对global.asax

中的路由器进行任何更改,提供了此功能

而你应该像这样添加网址

UrlHelper