控制器处理ActionResult和JSON数据?

时间:2012-06-06 15:26:48

标签: jquery asp.net-mvc-3 jquery-tokeninput

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

  • JOURNAL
  • AUTHOR

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

1 个答案:

答案 0 :(得分:0)

将参数置于行动中:

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

    var authors = collection["q"]; // gets by name
}