2013-12-17 2 views
0

У меня есть данные на определенной странице просмотра (собранной от пользователя), которую мне нужно отправить на другую страницу просмотра, которая имеет форму, требующую этих данных. Теперь я могу использовать: -
1. пост метод JavaScript (JQuery)Передача данных методом POST между представлениями в asp.net

$().redirect('/Events/Create', {'arg1': 'value1', 'arg2': 'value2'}); 

или

  1. Форма: -

$ ('# inset_form') .html ('< form action = "/ Events/Create" method = "post" style = "display: none;"> < input type = "text" name = "lat" value = "' + широта + '"/> </form>');

document.forms ['vote']. Submit();

Теперь, мой вопрос: какой метод следует выбрать?

Кроме того, «/ События/Create» страница имеет форму следующим образом: -

@using (Html.BeginForm()) { 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true) 
    <div class="editor-label"> 
     @Html.LabelFor(model => model.lat) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.lat)---------> THIS field accepts the POSTed data 
     @Html.ValidationMessageFor(model => model.lat) 
    </div> 

    <div> 
     ....OTHER INPUT FIELDS..... 
    </div> 

    <p> 
     <input type="submit" value="Create" /> 
    </p> 
} 

Итак, мой следующий вопрос, как я могу сделать текстовое поле «широчайшие», созданный @Html. EditorFor в форме показывает POSTed данные как значение по умолчанию. Затем пользователь может заполнить другие поля и затем отправить форму.

ответ

0

Согласно стандарту HTTP, если вызов не изменяет состояние веб-сайта (т. Е. Данные), вы должны использовать запрос GET. Это означает, что вы должны предоставить пользователю ссылку, содержащую правильную строку запроса, чтобы заполнить форму на странице/Events/Create.

Также имейте в виду, что вы никогда не отправляете данные из вида для просмотра в MVC. Все проходит через действие контроллера, поэтому убедитесь, что ваше действие «Создать» на контроллере «События» принимает правильные аргументы для заполнения формы для отправки. Если переменная Model.lat имеет значение в ней при визуализации представления, текстовое поле будет предварительно заполнено этим значением.

0

Почему вы хотите отправить данные во вторую форму? Если вы хотите показать форму и загрузить ее со значениями по умолчанию, создайте для нее метод действия GET и передайте значения по умолчанию в URL-адресе. Хотя нет ничего, что останавливало бы вас использование двух методов POST для одного и того же представления, нормальный подход состоял бы в том, чтобы загрузить форму с помощью GET, а затем POST вернуть данные после редактирования.

[HttpGet] 
public ActionResult Create(string lat) 
{ 
    MyView view = new MyView(); 
    view.lat = lat; 
    View(view); 
} 

[HttpPost] 
public ActionResult Create(MyView view) 
{ 
    //process posted data after editing 
} 

Объект представления здесь представляет класс ViewModel, содержащий свойства для данных, которые вы будете редактировать в форме. Сделайте свой вид строго типизированным для этого типа ViewModel.

Для вызова метода GET из вашего JQuery (выше):

window.location = "Events/Create?lat=myValue"; 
+0

@Paul ... Я имел в виду по умолчанию в том, что поле в форме (т.е. лат) будет определяться действием пользователя на конкретная страница ... чтобы все было ясно, здесь lat - это широта, которая является значением широты, где пользователь нажимает на карту ... так что «default» может быть неправильным – avinash

+0

@avinash, я думаю, я понял, что вы имели в виду , Вы хотите передать значение lat со страницы, на которую пользователь нажимает карту, на ваш объект Create. Мое решение это сделает. –

Смежные вопросы