Как получить идентификатор элемента с помощью Html.BeginForm()

У меня есть форма и некоторый код ниже.

@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>
}

И мое действие Insert в QuestionController выглядит так

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

Я хочу получить идентификатор вложенного тега span, используя Html.BeginForm и FormCollection. Как я могу это сделать? Пожалуйста, помогите мне. Большое спасибо.


person Abigail Vo    schedule 05.05.2012    source источник


Ответы (3)


Когда вы нажимаете кнопку отправки, форма собирает все входные значения внутри этой формы и отправляет на сервер в следующем формате: inputId=inputValue. Span не является элементом управления вводом внутри формы, и форма не собирает его значение или другую информацию для отправки на сервер. Вы можете создать скрытый элемент управления вводом и установить для него значение идентификатора. И затем на стороне сервера в действии вы можете получить его из 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();
}

Удачи.

person Dima Shmidt    schedule 05.05.2012
comment
Привет, @Dima Shmidt, я последовал твоему совету, и это действительно работает. Большое спасибо. :D - person Abigail Vo; 06.05.2012

Я почти уверен, что вы не можете. Вы можете использовать fiddler, чтобы увидеть, отправлены ли они обратно на сервер, но я не думаю, что это так.

person tzerb    schedule 05.05.2012

Вы должны использовать скрытые поля для отправки идентификатора диапазона на сервер. Является ли представление строго типизированным?

person Daniel    schedule 05.05.2012