2016-06-14 54 views
-1

因此,我有一個基於依賴於控制器的模型的視圖。嘗試使用局部視圖到達控制器時的問題

在該視圖中,我有一個模態的部分視圖,在該模態內用戶必須提供一些信息然後提交。我把它叫做_ModalContent,它是應取決於同一個控制器上,但是當我試圖讓這個控制器內部:

[HttpPost] 
    public ActionResult MyView(ParentModel model) 
    { 
     if (model != null) 
     { 
     UserInformationViewModel info = model.UserInformationViewModel; 
     var client = new MongoClient("mongodb://localhost:27017"); 
     var objDatabase = client.GetDatabase("Test"); 
     var collection = objDatabase.GetCollection<BsonDocument>("Users"); 
     BsonDocument objDocument = new BsonDocument { 
      {"Nom",info.NomUser}, 
      {"Prenom",info.PrenomUser}, 
      {"Email",info.EmailUser}, 
      {"Telephone",info.TelephoneUser}, 
      }; 

     collection.InsertOne(objDocument); 
     } 
     return View("_ModalContent"); 
    } 

我永遠不會到達斷點。因此,我的數據庫中沒有任何內容。無法弄清楚爲什麼!

RAZOR CODE

<div id="myModal" class="modal fade" role="dialog"> 
     <div class="modal-dialog"> 

      <!-- Modal content--> 
      <div class="modal-content" style="height:650px;width:775px; text-align: center;"> 
       <div class="modal-header"> 
        <button type="button" class="close" data-dismiss="modal">&times;</button> 
        <h4 class="modal-title">Informations</h4> 
        <p><b>You have to fill your informations</b></p> 
       </div> 
       @Html.Partial("_ModalContent") 
      </div> 

     </div> 
    </div> 

RAZOR CODE 2

@model ParentModel 

    @using (Html.BeginForm("CreerGarantie", "Garantie", FormMethod.Post, new { @id = "form1" })) 
    { 
    <div id ="userinput" class="form-panel-modify"> 
    <div class="form-horizontal style-form"> 
     <div class="form-group"> 
      @Html.LabelFor(m => m.UserInformationViewModel.NomUser, new {@class = "col-sm-d col-sm-2 control-label"}) 
      <div class="col-sm-3"> 
       @Html.TextBoxFor(m => m.UserInformationViewModel.NomUser, new {@class = "form-control"}) 
      </div> 
      @Html.LabelFor(m => m.UserInformationViewModel.PrenomUser, new {@class = "col-sm-d col-sm-2 control-label"}) 
      <div class="col-sm-3"> 
       @Html.TextBoxFor(m => m.UserInformationViewModel.PrenomUser, new {@class = "form-control"}) 
      </div>   
     </div> 
     <div class="form-group"> 
      @Html.LabelFor(m => m.UserInformationViewModel.EmailUser, new {@class = "col-sm-d col-sm-2 control-label"}) 
      <div class="col-sm-3"> 
       @Html.TextBoxFor(m => m.UserInformationViewModel.EmailUser, new {@class = "form-control"}) 
      </div> 
      @Html.LabelFor(m => m.UserInformationViewModel.TelephoneUser, new {@class = "col-sm-d col-sm-2 control-label"}) 
      <div class="col-sm-3"> 
       @Html.TextBoxFor(m => m.UserInformationViewModel.TelephoneUser, new {@class = "form-control"}) 
      </div> 
     </div> 
    </div> 
</div> 
<div style="margin-top:25px;"> 
    <input type="submit" disabled="true" class="btn btn-default" style="color:#ffffff;background-color:#48bcb4;border-color: #48bcb4;"> 
</div> 
} 

AJAX:

 $('#submit').click(function() { 

    var model=$('#form1').serialize(); 
    $.ajax({ 
     url: '/Controller/ActionName', 
     type: 'POST', 
     data: model, 
     dataType: 'html', 
     success: function (data) { 

     } 
    }); 
)}; 
+0

在添加部分視圖的位置顯示剃鬚刀代碼。 –

+0

我已經添加了,請告訴我,如果您需要別的東西 –

+1

也可以從部分視圖中添加剃鬚刀代碼 –

回答

1

您需要包裝形式submi按鈕Html.BeginForm並添加適當的控制器名稱和操作方法。

@using (Html.BeginForm("MyView", "ControllerName", FormMethod.Post) 
{ 
    <div style="margin-top:25px;"> 
     <input type="submit" disabled="true" class="btn btn-default" style="color:#ffffff;background-color:#48bcb4;border-color: #48bcb4;"> 
    </div> 
} 

編輯: AJAX方法

$('#submitButton').click(function (e) { 
    $.ajax({ 
     url: '/Controller/MyView', 
     type: 'POST', 
     data: data,  
     dataType: 'html', 
     success: function (data) { 

     } 
    }); 
)}; 
+0

不工作,我認爲這是因爲我的看法,部分被稱爲已經包裝在一個Html.BeginForm –

+0

你需要再添加一個'@Html。 BeginForm'用於部分視圖提交按鈕。 –

+0

是的,我像你說的那樣添加它,但沒有發生。在我看來,部分調用被封裝在@ Html.BeginForm中,我認爲它會產生衝突嗎? –

0

如果妳使用Ajax調用像

$('#submitButton').click(function (e) { 
    $.ajax({ 
     url: '/Controller/MyView', 
     type: 'POST', 
     data: data,  
     dataType: 'html', 
     success: function (data) { 

     } 
    }); 
)}; 

數據參數應具有類似的結構模型的創建。 數據將在

"JSON.stringify({your javascriptmodelobject})" 

這種格式

+0

我想這樣做沒有Ajax,但我發現很奇怪,我沒有達到控制器。也許有路線的東西? –

+0

添加一個Html.beginform,然後 –

+0

隨着Html.BeginForm它不能到達控制器......只有我給了一個參數Model.UserInformationViewModel,並給了我一個錯誤 –

1

如果您使用Ajax調用,然後當你正在做POST模式,那麼你必須序列化模型

首先你要包裝你可以發送。 CSHTML代碼形式的標籤一樣

@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post,new { @id="form1" }) 
{ 
    // your cshtml code here 

} 

上提交按鈕點擊事件

$('#submit').click(function() { 

    var model=$('#form1').serialize(); 
    $.ajax({ 
     url: '/Controller/ActionName', 
     type: 'POST', 
     data: model, 
     success: function (data) { 

     } 
    }); 
}); 

注意:如果您使用的按鈕類型=「提交」。請使用按鈕類型=「按鈕」。對於ajax Post請求。

+0

我需要Pu pu內部腳本應答器嗎? –

+0

yup ..如果您使用的是部分視圖,請首先確保該表單的ID在該呈現視圖中的任何位置都不存在。您可以嘗試將該腳本代碼放入該部分視圖中。 –

+0

好吧,但我得到一個錯誤,像一個)意外,但其中 –