2011-06-17 84 views
0

我在單個視圖上使用3 partialview,我有一個點擊提交按鈕,我想發送信息到數據庫,我必須從所有的partialview檢索數據。 你能否提供給我正確的信息來做到這一點。如何獲得控制器partialview數據

達林餘米使用L2S所以當我拖我的存儲過程,我得到這樣的代碼一些東西

    [global::System.Data.Linq.Mapping.FunctionAttribute(Name="SP_Name")] 
    public int SP_Name(
       [global::System.Data.Linq.Mapping.ParameterAttribute(Name="EmployeeID", DbType="Int")] System.Nullable<int> EmployeeID 
{ 

     IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), EmployeeID); 
     encounterID = ((System.Nullable<int>)(result.GetParameterValue(293))); 
     return ((int)(result.ReturnValue)); 
    } 
} 

更新

在我的控制器我米使用

public ActionResult Index(FormCollection frm) 
    { 
    My Code --------------------- 
    return Json(new { Result = "Success" }); 
    } 

當我返回這個我得到一個文件在回發,它要求我保存它。 我一直在使用flidder檢查,在URL它讓我發現,路徑爲/只 那裏,如果我填任何特定partialview它表明類似/控制器名稱/ Partialview 你能幫助我解決這個問題

回答

1

好,將數據發送到控制器操作通常通過對此控制器操作執行HTTP請求來完成。有執行HTTP請求的方式不同:

  1. 使用<form>標籤指向這個動作
  2. 使用AJAX

所以,如果你用第一種方法去,你可以有一個<form>包裝所有的部分將有多個提交按鈕(具有不同的名稱)。然後當你點擊一個提交按鈕時,所有的輸入字段將被髮送到控制器動作,然後在控制器動作中,你可以基於哪個提交按鈕被點擊來處理數據。

如果您使用第二個選項,那麼只需收集您需要發送的按鈕點擊按鈕並將它們沿着AJAX請求發送。


UPDATE:

正如在評論部分要求在這裏是如何的第一個技術可以付諸行動。它使用兩個部分而不是三個,但它可以很容易地外推。

與往常一樣開始通過定義將代表數據的視圖模型,你想在這個特別的觀點一起工作:

public class MyViewModel 
{ 
    public Partial1ViewModel Model1 { get; set; } 
    public Partial2ViewModel Model2 { get; set; } 
} 

public class Partial1ViewModel 
{ 
    public string Foo { get; set; } 
} 

public class Partial2ViewModel 
{ 
    public string Bar { get; set; } 
} 

然後控制器:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new MyViewModel 
     { 
      Model1 = new Partial1ViewModel { Foo = "foo" }, 
      Model2 = new Partial2ViewModel { Bar = "bar" }, 
     }; 
     return View(model); 
    } 

    [HttpPost] 
    public ActionResult Index(MyViewModel model) 
    { 
     // Here you have access to model.Model1.Foo and model.Model2.Bar => 

     var button = ""; 
     if (!string.IsNullOrEmpty(Request["submit1"])) 
     { 
      // submit1 button was used 
      button = "submit1"; 
     } 
     else if (!string.IsNullOrEmpty(Request["submit2"])) 
     { 
      // submit2 button was used 
      button = "submit2"; 
     } 

     var result = string.Format("thanks for submitting using {0}", button); 
     return Content(result, "text/plain"); 
    } 
} 

然後主視圖(~/Views/Home/Index.cshtml):

@model MyViewModel 

@using (Html.BeginForm()) 
{ 
    @Html.EditorFor(x => x.Model1) 
    @Html.EditorFor(x => x.Model2) 
} 

和兩個相應的edito [R模板(或諧音如果你願意):

~/Views/Home/EditorTemplates/Partial1ViewModel.cshtml

@model Partial1ViewModel 
<h2>Partial 1</h2> 
<div> 
    @Html.LabelFor(x => x.Foo) 
    @Html.EditorFor(x => x.Foo) 
    <input type="submit" value="Submit me!" name="submit1" /> 
</div> 

~/Views/Home/EditorTemplates/Partial2ViewModel.cshtml

@model Partial2ViewModel 
<h2>Partial 2</h2> 
<div> 
    @Html.LabelFor(x => x.Bar) 
    @Html.EditorFor(x => x.Bar) 
    <input type="submit" value="Submit me!" name="submit2" /> 
</div> 
+0

u能提供例如如何實現此 – 2011-06-17 11:26:27