在页面加载而不是onclick上运行的razor / mvc代码?

时间:2012-12-03 10:41:49

标签: c# asp.net-mvc razor

我有一个循环,可以创建一些按钮,并且(意味着)在按下该按钮时进行函数调用。

    foreach (Answer a in qanswers)
           {
               //Guid answerid = new Guid();
               <form method="post" action="">
               <div class="float-left">
               <input type="submit" value="@a.Answer1" class="submit" style="width:600px" onmousedown="@{saveTest(a, module, user, quest, healthsafety);}">
               <br /><br />
               </div>
               </form>
           }

但是,它会调用&#34; saveTest&#34;生成的每个按钮的页面加载过程,而不是onmousedown / onmouseclick。

可以改变这个吗?

2 个答案:

答案 0 :(得分:2)

我假设saveTest是你试图调用的服务器端函数。

onmousedown是一个客户端事件,只能直接运行客户端脚本。

如果您希望调用服务器端功能,则需要在页面将发布打包的表单中指定一个操作。

点击此处了解更多信息

http://msdn.microsoft.com/en-us/library/system.web.mvc.html.formextensions.beginform(v=vs.108).aspx

您的代码的快速修改版本将是:

foreach (Answer a in qanswers)
{

    using (Html.BeginForm("saveTest", "ControllerName"))
    {
           <div class="float-left">
           <input type="submit" value="@a.Answer1" class="submit" style="width:600px")>
           <br /><br />
           </div>

    }

}

答案 1 :(得分:0)

该按钮将提交给控制器和表单中指定的操作。因此,请仔细检查您指定的控制器和操作。

  using (Html.BeginForm("saveTest", "Controller"))
    {
    }

这是您必须指定表单的方式。

此致 Pavan.G