2013-08-23 36 views
3

我有MVC 4应用程序。这里是:
1. Model HashKey - 包含1个字符串键
2.模型ModelObjectA - 我的传输对象。
3. A类 - 根据请求生成唯一键,并将其与给定的ModelObjectA一起放入TempData中,并返回此唯一键。
4.控制器ControllerModelObjectA - 充当纯控制器。
5.查看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是在客户端和剃刀在服务器上。

有没有另一种方法来做到这一点?

编辑: 这里是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> 

编辑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,我必须模拟它。但我可以尝试。 –