我的ViewModel中有一些字段,我只需要视图中的输出。但是在提交表单时,他们总是得到发送。这不仅令人讨厌,而且也很危险,因为我绝对不想为这些视图模型字段提供数据库。
对于我的视图模型属性,是否有任何更改来定义OneWay数据库?
Thx预先
编辑:
问题列表,当我单击一个ValidSizes时,图片和ActionLink列表被发送回服务器。
http://localhost:52176/?PageSize=30&Index=31&Pictures=System.Collections.Generic.List%601[System.String]&Size=100&ValidSizes=System.Collections.Generic.List%601[System.Web.Mvc.SelectListItem]
public class PicturesViewModel
{
public const int SMALL = 100;
public const int MIDDLE = 150;
public const int BIG = 250;
public int PageSize { get; set; }
/// <summary>
/// Initializes a new instance of the <see cref="PicturesViewModel"/> class.
/// </summary>
public PicturesViewModel()
{
Pictures = new List<string>();
Size = SMALL;
Index = 1;
PageSize = 30;
}
/// <summary> Gets or sets the index. </summary>
public int Index { get; set; }
/// <summary>
/// Gets or sets the picture links.
/// </summary>
/// <value>The picture links.</value>
public List<string> Pictures { get; private set; }
/// <summary>
/// Gets or sets the size.
/// </summary>
/// <value>The size.</value>
public int Size { get; set; }
private List<SelectListItem> validSizes = null;
/// <summary>
/// Gets the valid sizes.
/// </summary>
/// <value>The valid sizes.</value>
public IEnumerable<SelectListItem> ValidSizes
{
get {
if (validSizes != null)
return validSizes;
validSizes = new List<SelectListItem>
{
new SelectListItem(){Text = "Small", Value = SMALL.ToString()},
new SelectListItem(){Text = "Middle", Value = MIDDLE.ToString()},
new SelectListItem(){Text = "Big", Value = BIG.ToString()}
};
return validSizes;
}
}
}EDIT2:
<div id="pager_left">
<%= Html.ActionLink("Prev", "Prev", Model)%>
</div></td>这就是导致绑定的Action。
发布于 2010-09-08 08:36:22
H 210G 211不要为图片/ValidSize创建表单输入元素诸若此类。
更新:
不是将不同的ViewModel分配给视图,而是分配给处理链接单击的控制器操作。从你的问题上看,你需要的似乎不是“单向”绑定,而是避免在URL中增加字符--因为,如果你的ValidSizes是IEnumerable,它不会被修改,而且不管怎么说,在你的URL中它的数据是错误的,不会导致更新--所以它已经是“单向”绑定了。
这就是我对你的问题所能找到的:http://forums.asp.net/t/1328683.aspx
至于解决方案,我自己从来不使用ActionLink助手,因为它是一个漏洞百出的抽象,我不喜欢与它斗争。简单的html链接标记总是要好得多。
<a href="<%= Html.BuildUrlFromExpression<>() %>" />为此,我实际上使用了我自己的几行BuildUrlFromExpression版本。还可以在上面的链接中看到如何通过匿名对象而不是模型传递参数(new { PageSize = Model.PageSize,index = Model.index })。
https://stackoverflow.com/questions/3665669
复制相似问题