好的 - 从我的控制器/创建,我想更新我的模型的两个部分:
- 杂志
- 作者
Journal\Create - 将创建一个基本日志,并查询作者表并使用作者姓名填充自动完成输入框(使用 JQuery,tokenInput)。
这很好用,到目前为止,我有一个空白表格来填写我的期刊详细信息,并且是选择一个或多个作者的好方法。
我感到困惑的是我如何让选定的作者回到我的控制器,因为签名是:
[HttpPost]
public ActionResult Create(JOURNAL journal)
{
//persist the journal object in the database ....
but where to get the authors that were picked in the input box??? and persist those
in the model?
}
现在,我涉足了,发现我可以使用
Request.Form["authorlist"];
这让 ID 回来了(不太确定如何??),但它们都连接在一起,没有任何分隔字符,所以没有多大意义,例如
1564654324544434344797361679
它应该是
1564,6543,2454,4434,3447,9736,1679
然后我可以对数据做一些事情。
无论如何,如果你们知道如何以更好的方式从我的输入框中取回结果,以及使用模型对象来填充数据库,那就太好了。
下面是代码:
看法
@using (Html.BeginForm()){
@Html.ValidationSummary(true)
<fieldset>
<legend>JOURNAL</legend>
<div class="editor-label">
@Html.LabelFor(model => model.TITLE)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.TITLE)
@Html.ValidationMessageFor(model => model.TITLE)
</div>
<div class="editor-label">
Select Authors</div>
<div class="authors">
<div class="editor-field">
<input type="text" id="authorlist" name="q"/>
</div>
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
JAVASCRIPT
$("#authorlist").tokenInput('/author/getauthors/', {
hintText: "Enter surname please..",
searchingText: "Searching...",
preventDuplicates: true,
allowCustomEntry: true,
highlightDuplicates: false
});
CONTROLLER(获取作者列表)
public JsonResult GetAuthors(string term)
{
Debug.WriteLine("Term is: " + term);
term = term.ToUpper();
var authors = db.AUTHOR
.Where(a => a.FULL_NAME.ToUpper().StartsWith(term))
.Select(a => new { id = a.AUTHOR_ID, name = a.FULL_NAME });
return Json(authors, JsonRequestBehavior.AllowGet);
}