Pur*_*ome 9 asp.net-mvc updatemodel
我如何使用ASP.NET MVC UpdateModel执行以下操作?我正在尝试将空间分隔的文本框数据(与新的StackOverflow问题中的TAGS文本框完全相同,如此)读入模型中.
例如.
<input type="Tags" type="text" id="Tags" name="Tags"/>
...
public class Question
{
public string Title { get; set; }
public string Body { get; set; }
public LazyList<string> Tags { get; set; }
}
....
var question = new Question();
this.UpdateModel(question, new [] { "Title", "Body", "Tags" });
Run Code Online (Sandbox Code Playgroud)
Tags属性确实被实例化,但它只包含一个项目,即输入到Tags输入字段的整个数据.如果我想在列表中有一个项目(基于通过空格拆分字符串)..最好的做法是什么来处理这个,好吗?
干杯!
您需要做的是将DefaultValueProvider扩展为您自己的.在您的值提供程序中,扩展GetValue(name)以拆分标记并加载到LazyList中.您还需要更改对UpdateModel的调用:
UpdateModel(q, new[] { "Title", "Body", "Tags" },
new QuestionValueProvider(this.ControllerContext));
Run Code Online (Sandbox Code Playgroud)
我写的QuestionValueProvider是:
public class QuestionValueProvider : DefaultValueProvider
{
public QuestionValueProvider(ControllerContext controllerContext)
: base(controllerContext)
{
}
public override ValueProviderResult GetValue(string name)
{
ValueProviderResult value = base.GetValue(name);
if (name == "Tags")
{
List<string> tags = new List<string>();
string[] splits = value.AttemptedValue.Split(' ');
foreach (string t in splits)
tags.Add(t);
value = new ValueProviderResult(tags, null, value.Culture);
}
return value;
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
归档时间: |
|
查看次数: |
6583 次 |
最近记录: |