4

我有 MVC 4 应用程序。情况如下:
1. 模型 HashKey - 包含 1 个字符串键
2. 模型 ModelObjectA - 我要传输的对象。
3. A 类 - 根据请求生成唯一键并将其与给定的 ModelObjectA 一起放入 TempData 并返回此唯一键。
4. 控制器 ControllerModelObjectA - 作为纯控制器。
5. 查看 ShowAllModelObjectA - 查看页面以显示来自控制器的集合。

这是如何工作的。我请求导航到 ShowAllModelObjectA。控制器使用要传输的对象调用类 A,并将唯一键发送到 ShowAllModelObjectA。视图调用方法来获取(不是 HttpGET)对应于从控制器接收到的键的对象。接收到这个对象集合,并在 @foreach 循环中分解对象并将它们放在一个表中。除了表中的对象之外,还放置了 3 个按钮,代表不同的功能(查看详细信息、编辑、删除)到相应的对象。

问题:在每个对象的按钮上,我必须使用@functions 来调用 ClassA 并发送对象本身,但只能点击而不是 for 循环。

这是一些代码(我已更改名称:))

@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在客户端,而剃刀在服务器端。

还有其他方法可以做到这一点吗?

编辑:这是租用的按钮:

 <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:我不确定我需要使用什么来满足该要求。我愿意接受建议。

4

1 回答 1

7

通过您粘贴的代码,问题是您将类名放在值标签中。尝试这样的事情:

@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>
}
于 2013-08-23T17:51:24.533 回答