2013-09-05 6 views
0

У меня есть список миниатюр для пользователя, который может выбрать одно из изображений.Передача значения из представления в контроллер - MVC

onclick on thumbnail открыть увеличенное изображение в форму.

Что я пытаюсь сделать сейчас, это отправить идентификатор изображения, выбранного для моего контроллера.

Примечание: им с помощью MVC 4.

, как я могу это сделать?

Кто-то может помочь с этим PLS?

Заранее спасибо:

Вот мой код:

@foreach (var p in ViewBag.Images) 
    {   
    <li> 
     <a href="~/Files/@p.Name" onclick="swap(this); return false;"> 
      <img src="~/Files/@p.Name"/> 
     </a> 
    </li> 
} 

при выборе будет этот IMG тег в моей форме:

<img id="main" src="" > 

используя этот JavaScript для этого события:

function swap(image) { 
     document.getElementById("main").src = image.href; 
    } 

что мне теперь нужно делать?

Я пытаюсь с <input type="hidden" name="Img_Id" value="Viewbag.??????"/> передать это значение моему контроллеру ??

+0

Вы должны представить его (через POST или GET) обратно в действие контроллера. – melancia

ответ

3

Во-первых, некоторая терминологическая помощь: вы не можете передать значение из представления в действие контроллера, представление отображается после завершения действия контроллера.

Что вы хотите сделать, это передать данные с клиента (веб-браузера) в действие контроллера, используя поля формы.

В вашем методе swap javascript вы можете установить значение поля Img_Id как значения для выбранного изображения. Когда форма отправлена, Img_Id будет размещен как данные формы и может быть принят в качестве параметра в действии.

Вы можете использовать JQuery (или что-то еще) для выполнения действий на стороне клиента.

Вот пример (не тестировался, хотя!):

Сначала добавьте идентификатор в качестве атрибута данных на элементе:

<a href="~/Files/@p.Name" data-id="@p.ID" onclick="swap(this); return false;"> 

Тогда некоторые Javascript, чтобы сохранить, что для формирования (с помощью JQuery здесь) :

function swap(image) { 
    document.getElementById("main").src = image.href; 
    $("input[name='Img_Id']").val($(image).data("id")); 
} 
+0

есть ли у вас пример, как это сделать? – user2232273

+0

@ user2232273: обновлено с примером. FYI, вы также можете использовать JQuery для подключения события кликов по ссылкам. – davesw

+0

@ davesw .. спасибо за пример .. Я пробовал, но все же не передал значение контроллеру. Мне нужно выглядеть лучше, как я могу это использовать – user2232273

0

чтобы передать значение обратно в контроллер, вам необходимо либо отправить форму, или же сделать запрос AJAX к контроллеру.

В первом случае вам нужно обновить значение своего скрытого поля с помощью javascript, а затем либо дождаться, когда пользователь отправит форму, либо инициирует отправку через javascript в зависимости от ваших потребностей.

Если вы хотите выполнить запрос ajax, это будет более или менее то же самое, но вам не нужно скрытое поле для хранения значения.

+0

есть ли у вас пример, как это сделать? – user2232273

+0

Несомненно. Вы хотите, чтобы пользователь отправлял форму вручную или просто автоматически делал что-то с изображением, как только они нажимают на него? – Jedediah

+0

Я хочу, когда пользователь нажмет на изображение, откройте увеличенное изображение в моей форме и после того, как пользователь нажмет кнопку отправки, отправит значения моему контроллеру. Большое спасибо за помощь. – user2232273

0

Вы можете использовать jQuery в своей функции свопинга. См. here для официальной документации.

Если вы решили использовать этот подход и предположив, что вы разместили свой JavaScript в отдельном файле, убедитесь, что вы получили путь к действию и контроллеру и передали его тоже.

var url = @Url.Action("Index","Home"); 

Таким образом, вы можете позвонить: OnClick = "своп (this.id, URL)"

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