2013-08-23 3 views
3

У меня есть приложение MVC 4. Вот так:
1. Модель HashKey - содержит 1 строковый ключ
2. Model ModelObjectA - мой объект транспорта.
3. Класс A - генерирует уникальный ключ по запросу и помещает его в TempData вместе с данным ModelObjectA и возвращает этот уникальный ключ.
4. Контроллер контроллераModelObjectA - служит как чистый контроллер.
5. View ShowAllModelObjectA - просмотр страницы для отображения коллекции с контроллера.MVC 4 кнопка onClick, вызывающая функцию бритвы

Как это работает. У меня есть запрос перейти к ShowAllModelObjectA. Контроллер вызывает класс A с объектом для передачи и отправляет уникальный ключ в ShowAllModelObjectA. Представление вызывает метод для получения (не HttpGET) объекта, отвечающего на полученный ключ от контроллера. Эта коллекция объекта получена и в цикле @foreach разборки объектов и их размещение в таблице. Наряду с объектом в таблице также помещаются 3 кнопки, которые представляют разные функции (просмотреть детали, отредактировать, удалить) соответствующему объекту.

Проблема: На каждой кнопке object`s я должен использовать @Functions позвонить CLASSA и отправить сам объект, но только по щелчку не на цикл.

Вот код (у меня есть изменить имена :))

@functions{ 
    public string ButtonClicked(ModelObjectA object) 
    { 
     System.Diagnostics.Debug.WriteLine("in");// to check when the method is called 
     return "dae"; 
    } 
} 

The foreach loop: 

<table> 
      @foreach (ModelObjectA Object in ModelObjectACollection) 
      { 
      <tr> 
       <td> 
        @Html.DisplayFor(modelItem => Object.Name) 
       </td> 
       <td> 
        @Html.DisplayFor(modelItem => Object.Email) 
       </td> 
       <td> 
        <button type="button" id="details" value="@Object" onclick="hello(value);">Details</button> 
        <button type="button" value="@Object">Edit</button> 
        <button type="button" value="@Object">Delete</button> 
       </td> 
      </tr> 
      } 
    </table> 

<script type="text/javascript"> 
    function hello(Value) { 
     alert("Clicked"); 
    } 
</script> 

Поскольку теперь у меня есть доступ к @ModelObjectA, но я не могу отправить его к функции бритвы, потому что Java на стороне клиента и бритва на сервере.

Есть ли другой способ сделать это?

EDIT: Вот это rentered кнопки:

<td> 

        <button type="button" id="details" value="(Project path).ModelObjectA" onclick="hello(value);">Details</button> 
        <button type="button" value="(Project path).ModelObjectA">Edit</button> 
        <button type="button" value="(Project path).ModelObjectA">Delete</button> 
       </td> 

EDIT 2: Я не уверен, что мне нужно использовать, чтобы выполнить это требование. Я открыт для предложений.

+0

Но ваш взгляд получает подготовить на стороне сервера, и вы можете включить javascpit на ваш взгляд. Какая ценность передается вашей функции hello()? –

+0

+0

Не могли бы вы рассмотреть другое название для своего вопроса, пожалуйста? «Вопросы MVC 4» слишком расплывчаты и не помогают другим, кто может извлечь выгоду из ответов. –

ответ

6

Введенный вами код в том, что вы помещаете имя класса в тег значения. Попробуйте что-то вроде этого:

@foreach (ModelObjectA mObjA in ModelDealerCollection) 
{ 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => ModelObjectA.Name) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => ModelObjectA.Email) 
     </td> 
     <td> 
      <button type="button" id="details" value="@mObjA" onclick="hello(value);">Details</button> 
      <button type="button" value="@mObjA">Edit</button> 
      <button type="button" value="@mObjA">Delete</button> 
     </td> 
    </tr> 
} 
+0

Да, я это видел. Я ошибся на экзамене, это @Object. Я только что исправил это. –

+0

Можете ли вы вставить пример кода HTML при его рендеринге? Просто кнопки достаточно. – Martin

+0

У меня нет доступа к компании SQL Server дома, я должен имитировать ее. Но я могу попробовать. –

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