2017-02-19 65 views
0

我有一個非常基本的代碼,實現基本的http發佈。當我點擊按鈕時,我期望執行流向「public ActionResult DepositToAcount(DepositToAccountView模型)」,但它沒有。我錯過了什麼?這裏是代碼:預先感謝。在asp.net mvc發佈不成功

public class MainController : Controller 
{ 

    public ActionResult DepositToAcount() 
    { 
     FindAllBankAccountResponse response = null; 
     DepositToAccountView viewmodel = null; 

     try 
     { 
      response = new ApplicationBankAccountService().GetAllBankAccounts(); 
      viewmodel = new DepositToAccountView(); 

      viewmodel.SetupList(response); 

     } 
     catch (Exception ex) 
     { 

      throw ex; 
     } 

     return View(viewmodel); 
    } 

    [HttpPost] 
    public ActionResult DepositToAcount(DepositToAccountView model) 
    { 
     //code execution never reachs there. 
     DepositToAccountView gorunum = null; 

     try 
     { 
      gorunum = new DepositToAccountView(); 
      //deposit implementation 

     } 
     catch (Exception ex) 
     { 

      throw ex; 
     } 

     return View(gorunum); 
    } 
} 

這裏是視圖:

@model AppService.ViewModel.DepositToAccountView 

@{ 
    ViewBag.Title = "Deposit To Acount Page"; 
} 

<h2>@ViewBag.Title</h2> 


<div class="form-horizontal"> 

    <div class="form-group"> 
     @Html.LabelFor(model => model.ChosenAccount, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.DropDownListFor(m => m.ChosenAccount, Model.AccountList) 
      @Html.ValidationMessageFor(model => model.ChosenAccount, "", new { @class = "text-danger" }) 
     </div> 
    </div> 

    <div class="form-group"> 
     @Html.LabelFor(model => model.AmountToBeDeposited, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.AmountToBeDeposited, new { htmlAttributes = new { @class = "form-control" } }) 
      @Html.ValidationMessageFor(model => model.AmountToBeDeposited, "", new { @class = "text-danger" }) 
     </div> 
    </div> 

    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
      <input type="submit" value="Deposit" class="btn btn-default" /> 
     </div> 
    </div> 

</div> 

這裏是DepositToAccountView:

public class DepositToAccountView 
{ 
    private string _amountToBeDeposited; 
    private string _chosenAccount; 
    private List<SelectListItem> _accountList; 

    public List<SelectListItem> AccountList 
    { 
     get 
     { 
      return _accountList; 
     } 

     set 
     { 
      _accountList = value; 
     } 
    } 


    [Display(Name = "Para Eklemek İstediğiniz Hesabı Seçiniz:")] 
    public string ChosenAccount 
    { 
     get 
     { 
      return this._chosenAccount; 
     } 

     set 
     { 
      this._chosenAccount = value; 
     } 
    } 

    [Display(Name = "Eklenecek miktarı giriniz: ")] 
    [DataType(DataType.Currency)] 
    [Required(ErrorMessage = "Lütfen bir miktar giriniz.")] 
    public string AmountToBeDeposited 
    { 
     get 
     { 
      return this._amountToBeDeposited; 
     } 

     set 
     { 
      this._amountToBeDeposited = value; 
     } 
    } 

    public DepositToAccountView() 
    { 
     this.AccountList = new List<SelectListItem>(); 
    } 

    public void SetupList(FindAllBankAccountResponse Response) 
    { 
     SelectListItem item = null; 

     try 
     { 
      if (Response == null) 
      { 
       return; 
      } 

      this.allDefaultValueToList(); 

      foreach (BankAccountView gorunum in Response.BankAccountView) 
      { 
       item = new SelectListItem(); 
       item.Text = gorunum.CustomerRef; 
       item.Value = gorunum.AccountNo.ToString(); 
       this.AccountList.Add(item); 
      } 
     } 
     catch (Exception) 
     { 

      throw; 
     } 
    } 

    private void allDefaultValueToList() 
    { 
     SelectListItem secinizHesap = new SelectListItem(); 
     secinizHesap.Value ="0"; 
     secinizHesap.Text = "Hesap Seçiniz"; 

     this.AccountList.Add(secinizHesap); 
    } 
} 

回答

0

看來你沒有<form>。它應該提交什麼? :)

所以,如果你改變你的看法是這樣的:

@model AppService.ViewModel.DepositToAccountView 

@{ 
    ViewBag.Title = "Deposit To Acount Page"; 
} 

<h2>@ViewBag.Title</h2> 

@using(Html.BeginForm()) 
{ 
<div class="form-horizontal"> 

    <div class="form-group"> 
     @Html.LabelFor(model => model.ChosenAccount, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.DropDownListFor(m => m.ChosenAccount, Model.AccountList) 
      @Html.ValidationMessageFor(model => model.ChosenAccount, "", new { @class = "text-danger" }) 
     </div> 
    </div> 

    <div class="form-group"> 
     @Html.LabelFor(model => model.AmountToBeDeposited, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.AmountToBeDeposited, new { htmlAttributes = new { @class = "form-control" } }) 
      @Html.ValidationMessageFor(model => model.AmountToBeDeposited, "", new { @class = "text-danger" }) 
     </div> 
    </div> 

    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
      <input type="submit" value="Deposit" class="btn btn-default" /> 
     </div> 
    </div> 

</div> 
} 

應該按預期工作。 Html.BeginForm()在這裏添加起始表單元素,當它放置在using語句的末尾時,它將寫入結束元素。