0

我是一名桌面开发人员,我正在用 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);
    }

到现在为止还挺好。没问题。现在我想用不显眼的 ajax 在部分视图中向用户显示它选择的类别的 ID……因为我没有让它工作,所以我开始的时候更小了。现在忘记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 并查看变量“数据”中的内容时看到了这一点。谁能帮我为什么它不渲染2?然后我可以继续自学这些东西。非常感谢您的帮助。如果您错过任何类型的信息,请随时询问。

4

2 回答 2

1

我认为问题在于 minicart div 的 id 拼写错误。您的 id 不包含任何大写字母,但您的选择器包含。因此,您应该使用 $("#miniCart") 而不是 $("#miniCart") 并且它会起作用。

于 2013-03-05T09:33:22.460 回答
0

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

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

考虑到您没有对 global.asax 中的路由器进行任何更改,这是提供的

相反,您应该像这样添加网址

网址助手

于 2013-03-05T09:22:35.160 回答