最近刚开始在项目中使用MVC,(ps:不要笑我老土啊)。使用的过程中遇到了一些小问题,记录下来以便日后翻阅。
$.post("@Url.Action("AddFriendLink" , "Setup")" ,{"Name" :escape(name)},function(data){
if(data>0){
alert( '添加成功!' );
window.location.reload();
}
else{
alert( '添加失败!' );
}
});
public JsonResult Add(string Name)
{
DemoClass demoClass= newDemoClass
{
Name = Server.UrlDecode(Name)
};
int result = demoService.Add(demoClass);
return Json(result);
}
其实这个本不算是问题,不过刚开始还是写错了。
@Html.TextBoxFor(model => model.Name, new { width="300px" }) (×)
发现没有效果。
@Html.TextBoxFor(model => model.Name, new { @style = "width:300px" }) (√)
像下面这样就可以了。当Model.IsStudent=true时会自动选中第一项,以此类推。
@Html.RadioButtonFor(model=>model.IsStudent,true)是
@Html.RadioButtonFor(model => model.IsStudent, false)否
@helper GetStatusName(int status)
{
//code block
}
调用时直接使用@GetStatusName(2)即可。
5.model多级引用时,对应的html?
@ Html.TextBoxFor(model => model.Topic.Title)
对应生成的HMTL代码为:
<input name="Topic.Title" class="ConInpon" id="Topic_Title" Onkeyup="getLen(this)" type="text"/>
在写脚本的时候要注意了啊。
6.DropDowlList控件数据绑定的几种常用方式?
①下拉框中的选项为几个简单的固定值。
@Html.DropDownList("ProvinceId", new SelectListItem[]{
new SelectListItem{ Text="选择类别",Value="0", Selected=true},
new SelectListItem{Text="类别A",Value="1"},
new SelectListItem{Text="类别B",Value="2"}
})
②将数据封装为SelectList类型,并且放在ViewBag中进行传递。
IList< Person> personList =personService.GetList();
ViewBag.personId= new SelectList(personList , "Id", "Name", queryParam.EditorId);
@Html.DropDownList( "personId")
③如果页面中的数据比较多,直接都放在viewbag中传递会比较乱,我们可以将页面中需要的数据封装成一个类,其中Select类型被封装为一个属性。
public class IndexView
{
public SelectList PersonList{get;set;}
…
}
IList< Person> personList =personService.GetList();
IndexView indexView = new IndexView ()
{
PersonList= new SelectList(personList , "Id", "Name", personList )
};
ViewBag.indexView = indexView;
@ Html.DropDownListFor(x=>queryParam.PersonId,indexView.PersonList)
做表单提交时,绕的小弯子:
@ using (Ajax.BeginForm( "Index", "Manage" , new AjaxOptions
{
HttpMethod = "Post",
OnSuccess = "Success",
OnFailure = "Failure"
}))
{
@Html.ValidationSummary(true)
@ Html.TextBoxFor(model => model.Name, new { @style = "width:300px" })
@Html.ValidationMessageFor(model => model.Name)
}
////脚本提示执行结果
<script language="javascript" type ="text/javascript">
function Success() {
alert( "修改成功" );
}
function Failure() {
alert( "修改失败!" );
}
</script>
其中还可以设置 UpdateTargetId属性,执行结果后用来显示执行结果。
重要的一点是要添加
<script src=" @Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js" )" type="text/javascript"></script >
现在基本成功了。
8:关于Ajax.BeginForm乱码的疑问
view里面和web.config里的编码有冲突了:
view:使用ajax.BeginForm需要添加该引用
<script src=" @Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js" )" type="text/javascript"></script >
web.config: 网站编码要求采用gb2312
<globalization fileEncoding=" gb2312" requestEncoding =" gb2312" responseEncoding=" gb2312" culture =" zh-CN" />
还希望各位大牛能够慷慨的提供一种比较好的解决方案,这里是测试项目。 【附件:中文乱码demo】
对于这个问题,JohnnyYan给出了详尽的回答,在此深表感谢