起初我对网络开发完全是新手。我正在尝试开发一个由单个页面组成的 Web 应用程序(我从一个空项目开始尝试遵循 mvc 模式)。
为了填充我的视图,我通过我的 HomeController 将 ViewModel 传递到我的“Home”视图。
现在我想根据下拉选择更改一些标签文本。
视图模型:
public IEnumerable<Models.Language> AvailableLanguages;
public Models.Language SelectedLanguage
Public IEnumerable<Models.Text> Content;
语言:
public int ID;
public string LanguageText;
Text:
public Language Language;
public string Description;
HTML:
@model ViewModels.MyViewModel
<div>
@Html.DropDownFor(x => x.AvailableLanguages,
new SelectList(Model.AvailableLanguages,
"ID",
"LanguageText",
new {@onchange= ... }))
</div>
<div>
@{
@:@Model.MyViewModel.Content
.Where(o => o.Language.Equals(Model.SelectedLanguage)
.First())
.Description
}
</div>
我读到了一些关于这个“@onchange”属性(Ajax,JQuery)的内容 - 但说实话,如果有任何 ASP/MVC/HTML 解决方案来实现我的目标 - 每次选定项目时更新我的 SelectedLanguage 属性,那就太好了下拉菜单的内容发生变化。
另外:有没有可以推荐的 Web 开发(asp、html、ajax、jquery、js)教程?
Thanx!
EDIT
现在我尝试实现提供的代码,但更改所选项目时似乎没有任何反应......
Script:
<div class="LanguageSelection">
@{
@Html.DropDownList("SelectedLanguage", new SelectList(Model.AvailableLanguages, "ID", "Description"))
<script src="~/Scripts/jquery-1.10.2.min.js" type="text/javascript">
var url = '@Url.Action("ChangeLanguage", "Home")';
$('#SelectedLanguage').change() {
$.getJSON(url, {
ID: $(this).val()
}, function(response){
$('#Title').text(response.Title);
});
};
</script>
}
</div>
Json结果:
public JsonResult ChangeLanguage(int id) {
var data = new {
Title = HVM.Title.Where(o => o.Language.ID.Equals(id)).First(),
};
return Json(new { success = true });
}
问题应该位于脚本中的某个位置,ChangeLanguage 方法甚至没有被执行。