我是一名桌面开发人员,我正在使用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?然后我可以继续教自己这些东西。非常感谢您提前帮助。如果您遗漏任何信息,请不要犹豫。
答案 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
中的路由器进行任何更改,提供了此功能而你应该像这样添加网址