如何使用Html.BeginForm()获取元素的ID

时间:2012-05-05 08:16:01

标签: asp.net-mvc-3 razor formcollection

我有下面的表格和一些代码。

@using (Html.BeginForm("Insert", "Question", "POST"))
{
    <div id="add_tag">
        <div id="list_tag">
            <span class="post-tag" id="2">Phi kim<span class="delete-tag" title="Xóa Tag này"></span></span>
            <span class="post-tag" id="22">Hóa Vô Cơ<span class="delete-tag" title="Xóa Tag này"></span></span>
            <span class="post-tag" id="1">Lý<span class="delete-tag" title="Xóa Tag này"></span></span>
        </div>
        <div class="tag-suggestions hidden">
        </div>
    </div>
    <div class="form-sumit clear">
        <input type="submit" id="submit-button" value="Post your question" />
    </div>
}

我在QuestionController中的Insert动作就像这样

    [HttpPost]
    [ValidateInput(false)]
    public ActionResult Insert(FormCollection _form)
    {
        //my code here
    }

我想通过使用Html.BeginForm和FormCollection来获取嵌套的span标签的id。我怎样才能做到这一点? Plz有人帮助我。非常感谢。

3 个答案:

答案 0 :(得分:3)

当您单击“提交”按钮时,表单将收集此表单中的所有输入值,并使用以下格式发送到服务器:inputId = inputValue。 Span不是表单内的输入控件,表单不会收集其值或其他信息发送到服务器。您可以生成隐藏的输入控件并为其设置id值。然后在操作的服务器端,您可以从FormCollection中获取它。

[HttpPost]
[ValidateInput(false)]
public ActionResult Insert(FormCollection formCollection)
{
    //for example all hidden input controls start with "hidden_tag" id 
    //and end with your number of tag:
    var allNeededKeys = formCollection.AllKeys.Where(x => x.StartsWith("hidden_tag"));
    var listOfId = allNeededKeys.Select(formCollection.Get).ToList();
}
祝你好运。

答案 1 :(得分:0)

我很确定你做不到。您可以使用fiddler来查看它们是否已发回服务器,但我认为它们不是。

答案 2 :(得分:0)

您应该使用隐藏字段将span的id发布到服务器。 视图是否强类型?