2012-05-28 76 views
0

这是我的行动:呼叫操作从视图

[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 })%> 

回答

0

您的操作方法类型为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)在文件头部分,我们包括了参考jQuery library。我包括谷歌CDN的参考。你可以改变它来包含你的本地副本。如果您正在使用ASP.NET MVC,则默认项目模板在Scripts文件夹下(版本号可能不同)。

2)在文档ready事件($(function(){..)我们结合一些功能,其具有ID btnPost的按钮。我们正在绑定click事件的功能。所以每当用户点击那个按钮时,这段代码就会被执行。

3)我们正在阅读文本框的值,并利用jQuery的post方法。它会将我们传递的数据(我们将文本框的值传递给此处)发布到操作方法。一旦action方法返回一个返回给calle的东西,它将被存储在数据变量中。您可以在检查其值后做更多的事情(向用户显示一些消息/重新载入一些内容)。

+0

我明白了,但你能给我一个例子,因为我是jquery中的nweebie。 – Chlebta

+0

@Chlebta:查看我更新的答案。尝试阅读jQuery文档。这是一个很棒的图书馆 – Shyju

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;   //  --- " ----- 
}