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