2016-12-08 2 views
0

Я новичок в нокауте, и у меня возникли проблемы с получением синтаксиса при использовании его с разметкой MVC.Я хочу использовать Url.Action с нокаутом

Например, код здесь;

<a href="text.Answer" target="_blank"> 
    <span style="display:inline-block"> 
     <img src="@Url.Action("GetPhotoThumbnail", new { path = text.Answer, width = 120, height = 80 })" alt="Property Image" style="margin-top: 5px;" /> 
    </span> 
</a> 

EDIT Таким образом, «Ответ» находится в ViewModel и в нокауте нужно ввести данные привязку = «текст: Ответ», но здесь я поставил в 2-х местах text.Answer. Как заменить текст. Ответ в приведенном выше коде с правильной разметкой нокаута?

Я знаю, что приведенный выше код не будет работать, но это упрощенный способ показать проблему. Я хочу привязать данные к тексту. Ответ. Каков правильный синтаксис для этого?

+0

Опишите проблему подробнее. С вашим кодом нет никакого нокаута. Была ли проблема? – TryingToImprove

+0

Я отредактировал вопрос. Надеюсь, теперь это имеет больше смысла? – arame3333

ответ

0

Я предполагаю, что у вас есть модель представления привязываться к этой части DOM, так что вы должны быть в состоянии использовать атрибут data-bind и attr связывания для достижения следующего:

<a href="" data-bind="attr : { href: text.Answer } " target="_blank"> 
    <span style="display:inline-block"> 
     <img src="@Url.Action("GetPhotoThumbnail", new { path = text.Answer, width = 120, height = 80 })" alt="Property Image" style="margin-top: 5px;" /> 
    </span> 
</a> 

Посмотреть http://knockoutjs.com/documentation/attr-binding.html для получения дополнительной информации об этой привязке.

Также вам нужно сделать модель представления генерировать вам значение по img[src] атрибута так попробовать что-то вроде:

<img data-bind="attr:{ src: text.answerImgSrc() } " alt="Property Image" style="margin-top: 5px;" /> 
+0

Вы правильно поняли. Я вижу, что мой вопрос не ясен, поэтому я его отредактировал. Вы ответили за гиперссылку, и это выглядит хорошо. text.Answer также находится в команде Url.Action. Я был бы очень признателен, если бы вы это исправили. – arame3333

+0

обновленный ответ, вы должны сгенерировать свой img src в пределах viewmodel сейчас, так как это будет иметь больше проблем с клиентской стороной. –

0

Если я вас правильно понял, что ваш text.Answer что-то связать в стороне клиента.

Вы не можете смешивать @Url.Action с клиентской стороны переменных

Попробуйте создать ваш URL как это

"@Url.Action("GetPhotoThumbnail")?path="+variable1+"&width="+variable2+"&height=" +variable3

0

Вы могли бы пройти необходимые значения в ViewModel.

<div id="test"> 
    <a href="#" data-bind="attr: { href: href }" target="_blank"> 
     <span style="display:inline-block"> 
      <img src="" data-bind="attr: { src: imageUrl }" alt="Property Image" style="margin-top: 5px;" /> 
     </span> 
    </a> 
</div> 

<script type="text/javascript"> 
    function MyViewModel(defaultValues) { 
     this.href = defaultValues.href; 
     this.imageUrl = defaltValues.imageUrl 
    } 

    var viewModel = new MyViewModel({ 
     imageUrl: '@Url.Action("GetPhotoThumbnail", new { path = text.Answer, width = 120, height = 80 })', 
     href: '@Url.Action("Test")' 
    }); 
    ko.applyBindings(viewModel, document.getElementById('test')); 
</script> 
Смежные вопросы