Javascript 调用razor函数的MVC4按钮onClick

Javascript 调用razor函数的MVC4按钮onClick,javascript,asp.net-mvc,razor,Javascript,Asp.net Mvc,Razor,我有MVC4应用程序。情况如下: 1.模型哈希键-包含1个字符串键 2.ModelObjectA-要传输的我的对象。 3.类A-根据请求生成唯一密钥,并将其与给定的ModelObjectA一起放入TempData中,然后返回此唯一密钥。 4.控制器控制器模型对象-用作纯控制器。 5.查看ShowAllModelObjectA-查看页面以显示来自控制器的集合 这是怎么回事。我请求导航到ShowAllModelObjectA。控制器使用要传输的对象调用类A,并将唯一键发送到ShowAllModelO

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

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

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

下面是一些代码(我已经更改了名称:))

@函数{
公共字符串按钮单击(ModelObjectA对象)
{
System.Diagnostics.Debug.WriteLine(“in”);//检查何时调用该方法
返回“dae”;
}
}
foreach循环:
@foreach(ModelObjectACollection中的ModelObjectA对象)
{
@DisplayFor(modelItem=>Object.Name)
@DisplayFor(modeleItem=>Object.Email)
细节
编辑
删除
}
函数hello(值){
警报(“点击”);
}
从现在起,我可以访问@ModelObjectA,但我无法将其发送到razor函数,因为java位于客户端,而razor位于服务器端

还有别的办法吗

编辑: 以下是租用按钮:

 <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:我不确定我需要用什么来满足这个要求。我愿意听取建议。

根据您粘贴的代码,问题是您正在将类名放入值标记中。 试着这样做:

@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>
}
@foreach(ModelDealerCollection中的ModelObjectA mObjA)
{
@DisplayFor(modelItem=>ModelObjectA.Name)
@DisplayFor(modelItem=>ModelObjectA.Email)
细节
编辑
删除
}

但您的视图在服务器端得到准备,您可以在视图中包含javascpit。传递给hello()函数的值是什么所以它是“模型对象”,你能为你的问题考虑一个不同的题目吗?“MVC 4问题”太模糊了,对其他可能从答案中受益的人没有帮助。我已经改变了,现在好了吗?是的,我看到了。我在示例中拼错了它是@Object。我刚刚修复了它。你能在呈现HTML代码时粘贴一个HTML代码的示例吗?只要按一下按钮就够了.我在家里没有访问SQL Server公司的权限.我必须模拟它。但是我可以试试。我在问题编辑中发布了它:我可以看到你正在将对象本身指定给“值”,你应该指定对象的一些属性。例如:编辑。你想让那个按钮将你重定向到另一个页面吗?如果是这种情况,您应该为该值分配一些标识属性,并在onclick事件中调用JS函数或控制器中的方法。
@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>
}