从视图中调用操作

时间:2012-05-28 22:29:18

标签: asp.net-mvc

这是我的行动:

[HttpPost]
    public ActionResult AddDispo(string idv, string dd, string df)
    {
        try
        {
            Models.indisponible model = new Models.indisponible();
            model.Dd = Convert.ToDateTime(dd);
            model.Df = Convert.ToDateTime(df);
            model.idv = idv;
            entity.indisponible.AddObject(model);
            entity.SaveChanges();
            TempData["Resultat"] = "La nouvelle date a été ajouté courrectement";
            return RedirectToAction("Dispo", "Agence", new { idv = idv});
        }
        catch (Exception)
        {
            TempData["Resultat"] = "Une erreur se produiset Vielliez ressaiyer";
            return RedirectToAction("Dispo", "Agence", new { idv = idv});
        }

    }

我想在不使用Html.beginForm的情况下调用此操作,我已经进行了此次试用,但它没有奏效:

<%: Html.Action("Accepter", "Adddispo", new { id = Model.idv, dd = Model.Dd, df = Model.Df  })%>

2 个答案:

答案 0 :(得分:0)

您的Action方法类型为 HTTPOST 。所以你需要一个表单发布来调用该动作。如果您不希望在视图中使用表单标记,则可以使用jQuery进行POST。

以下示例在用户点击ID为btnPost的按钮时发布帖子。

HTML(您的观点内容)

<html>
 <head>
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
 </head>
 <body>
     Name : <input type="text" id="txtName" />  <br/>
     Age: <input type="text" id="txtAge" />  <br/>
     Place : <input type="text" id="txtPlace" />  <br/>
     <input type="button" value="Save" id="btnPost" /> 

     <script type="text/javascript">
      $(function(){

         $("#btnPost").click(function(e){
            e.preventDefault(); // preventing the default button submit behaviour

            var name=$("#txtName").val();  //reading the text box values
            var age=$("#txtAge").val(); 
            var place=$("#txtPlace").val(); 

            $.post("YourController/AddDispo", { idv :name, dd : age, df=place} ,function(data) { 
              //Do whatever with the the response. may be an alert
              alert(data);
            });    
         });

     });
    </script>

它的作用

1)在文档的head部分,我们添加了对jQuery library的引用。我收录了谷歌CDN的参考资料。您可以将其更改为包含本地副本。如果您正在使用ASP.NET MVC,则默认项目模板会在Scripts文件夹下(版本号可能不同)。

2)在文档ready事件($(function(){..)中,我们将某些功能绑定到ID为btnPost的按钮。我们绑定了click事件的功能。因此,只要用户点击该按钮,就会执行该段代码。

3)我们正在阅读文本框值,并使用jQuery的post方法。它会将我们传递的数据(我们将文本框的值传递给)传递给action方法。一旦action方法将某些东西返回给calle,它就会存储在data变量中。在检查了它的值之后,你可以做更多事情(向用户显示一些消息/重新加载一些内容)。

答案 1 :(得分:0)

动作链接将始终发送“GET”请求。从控制器操作中删除[HttpPost]属性,或使用shyju建议的类似技术。动作链接有一些Windows事件的问题,所以你应该坚持使用程式化的按钮,除非特别需要锚点。样例样式将是:

#mybutton input[type=submit] {
    background: none;
    padding: 0px;
    font-family: arial;
    font-size: 1em;
    cursor: pointer;        // to make it look like link
    border: none;           //     --- " -----
}