Asp.Net MVC3剃刀提交调用方法

问题描述:

你好,我是新的我MVC中,我有一个视图Asp.Net MVC3剃刀提交调用方法

@model MeterProfileData.Core.Dto.CdapiDto 

@{ 
    ViewBag.Title = "Create"; 
    Layout = "~/Views/SiteMaster.cshtml"; 
} 

<h2>Create</h2> 


@using (Html.BeginForm()) { 
    <fieldset> 
     <legend>Add new CDAPI</legend> 
     <div class="editor-label"> 
      @Html.LabelFor(model => model.Name) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Name) 
      @Html.ValidationMessageFor(model => model.Name) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.Url) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Url) 
      @Html.ValidationMessageFor(model => model.Url) 
     </div> 
     <p> 
     <input type="submit" value="Save" /> 
     </p> 
    </fieldset> 
} 
<div> 
    @Html.ActionLink("Back to List", "CdapiList") 
</div> 

和未来CONTROLER

public class CdapiController : Controller 
    { 
    // 
    // GET: /Cdapi/ 

    public ActionResult CdapiList() 
    { 
     var cdapiList = new CdapiService().GetListCdapiServers(); 
     return View(cdapiList); 
    } 

    [HttpGet] 
    public ActionResult Create() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Create(CdapiDto dto) 
    { 
     new CdapiService().CreateCdapi(dto); 
     return RedirectToAction("CdapiList"); 
    } 
    } 

提交后总是先打电话方法和页面刷新。我做错了什么?并调用第二个方法做什么,发送给它从页面参数

总纲

<!DOCTYPE html> 
<html> 
<head> 
    <title>@ViewBag.Title</title> 
</head> 
<body> 
    <div> 
    </div> 
</body> 
</html> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
    <title>Test mvc</title> 
    <meta name="keywords" content="" /> 
    <meta name="description" content="" /> 
    <link rel="stylesheet" href="/Content/style.css" type="text/css" media="screen, projection"> 
    </link> 
    <script src="@Url.Content("~/Content/javascript/jquery-1.7.1.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/jquery-jtemplates.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div id="wrapper"> 
     <div id="header"> 
      <h3> 
       View Pages</h3> 
      <ul> 
       <li><a runat="server" href="/Register">Registers</a></li> 
       <li><a runat="server" href="/MeterProfile">Meter Profiles</a></li> 
       <li><a runat="server" href="/register/SupportedRegisters">Supported Registers </a></li> 
       <li><a runat="server" href="/logers/SupportedLogers">Supported Loggers </a></li> 
       <li><a runat="server" href="/Cdapi/CdapiList">CDAPI Servers </a></li> 
      </u> 
     </div> 
     <div id="content"> 
      @RenderBody() 
     </div> 
     <div id="footer"> 
     </div> 
    </div> 
    <div> 
    </div> 
    </form> 
</body> 
</html> 
+0

你确定它没有调用第二个创建,然后重定向到CdapiList? – Shyju 2012-01-30 15:49:28

我不知道你想达到什么,但你需要告诉它的行动发布于:

@using (Html.BeginForm("Create", "Cdapi", FormMethod.Post)) 
+0

我尝试一下。 @using(Html.BeginForm(“Create”,“Cdapi”,FormMethod.Post))没有帮助 – 2012-01-30 14:58:40

+0

你是说如果你把一个断点放在新的CdapiService()。CreateCdapi(dto)它不会停止? – Razvan 2012-01-30 15:06:09

+0

你写的代码是reduntant - 默认情况下它已经以这种方式工作 – archil 2012-01-30 15:09:28

您的总纲另一个form标签开幕<body>标签之后。删除那个表格,你应该很好。

+0

叶:(我是从Asp.Net项目复制主布局,并忘记了那里的形式。谢谢现在,所有的作品 – 2012-01-30 16:04:41

+1

没问题,我只知道这从自我经验:(如果它解决了你的问题,请选中标记为已回答。 – MisterIsaak 2012-01-30 16:10:53