0

好的 - 从我的控制器/创建,我想更新我的模型的两个部分:

  • 杂志
  • 作者

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);
        }
4

1 回答 1

0

将作为参数置于操作中:

[HttpPost]
public ActionResult Create(JOURNAL journal, FormCollection collection)
{
    //persist the journal object in the database ....

    var authors = collection["q"]; // gets by name
}
于 2012-06-06T17:44:25.407 回答