有没有办法更新模型项目,同时还在同一时间向其中一个属性添加新项目?
我们说我有以下型号:
public class Article
{
public string ArticleName { get; set; }
public string ArticleText { get; set; }
public virtual ICollection<ArticleNotes> ArticleNotes { get; set; }
}
public class ArticleNotes
{
public string ArticleNote { get; set; }
}
以下观点:
@model MyApp.Models.Article
@using (Html.BeginForm("Article", "Article", FormMethod.Post))
{
@Html.EditorFor(model => model.ArticleName)
@Html.EditorFor(model => model.ArticleText)
<button id="btnSave" name="Submit" type="submit" value="Save" >Save</button>
}
在同一视图中是否还有一种方法可以保存新的ArticleNote?
我知道我可以创建一个既包含Article属性又包含单独的ArticleNote属性的模型,但我想看看我是否可以做其他事情,因为我已经在Article中有了ArticleNote类型的集合。感谢。
答案 0 :(得分:1)
您可以这样做,但ASP.NET期望以特定方式定义输入的名称。在您的情况下,您希望渲染的HTML看起来像:
<input type="text" name="ArticleNotes[0].ArticleNote" />
当此数据发送到服务器时,模型绑定将知道它是相关集合并填充模型。 An article by Phil Haack似乎仍然是此功能的权威来源。
答案 1 :(得分:1)
您可以执行以下操作:
@model MyApp.Models.Article
@using (Html.BeginForm("Article", "Article", FormMethod.Post))
{
@Html.EditorFor(model => model.ArticleName)
@Html.EditorFor(model => model.ArticleText)
var noteInputName = ViewData.TemplateInfo.GetFullHtmlFieldName("ArticleNotes") + "[0].ArticleNote";
<input type-"text" name="@noteInputName" value=""/>
<button id="btnSave" name="Submit" type="submit" value="Save" >Save</button>
}
答案 2 :(得分:1)
您可以执行以下操作:
@model MyApp.Models.Article
@{
int counter = 0;
}
@using (Html.BeginForm("Article", "Article", FormMethod.Post))
{
@Html.EditorFor(model => model.ArticleName)
@Html.EditorFor(model => model.ArticleText)
<input ArticleNotes[@counter]_ArticleNote" name="ArticleNotes[@counter].ArticleNote" value="" type="text" />
<button id="btnSave" name="Submit" type="submit" value="Save" Save</button>
}
您可以像使用
一样使用ArticleNotes属性public virtual List<ArticleNotes> ArticleNotes { get; set; }
在文章类
中希望这对你有帮助。