2017-02-19 13 views
0

私は基本的なHTTPポストを実装する非常に基本的なコードを持っています。私がボタンをクリックしたとき、私は実行フローが "Public ActionResult DepositToAcount(DepositToAccountView model)"になると予想しますが、それはありません。私は何が欠けていますか?ここにコードがあります:事前に感謝します。ここで投稿が失敗しました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ステートメントの最後に配置すると、終了要素が書き込まれます。

関連する問題