2013-12-17 32 views
0

我有一個特定的視圖頁面(從用戶收集)的數據,我需要發送到另一個需要這種數據的形式的視圖頁面。現在,我可以使用: - 的JavaScript
1. POST方法(jQuery的)通過POST方法在asp.net中的視圖之間傳遞數據

$().redirect('/Events/Create', {'arg1': 'value1', 'arg2': 'value2'}); 

  1. 一種形式: -

$( '#inset_form') .html('< form action =「/ Events/Create」 method =「post」style =「display:none;」> < input type =「text」name =「lat」 value =「' + latitude +'「/> </form>');

document.forms ['vote']。submit();

現在我的問題是,應該選擇哪種方法?

而且,「/活動/創建」頁面有下列方式形式: -

@using (Html.BeginForm()) { 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true) 
    <div class="editor-label"> 
     @Html.LabelFor(model => model.lat) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.lat)---------> THIS field accepts the POSTed data 
     @Html.ValidationMessageFor(model => model.lat) 
    </div> 

    <div> 
     ....OTHER INPUT FIELDS..... 
    </div> 

    <p> 
     <input type="submit" value="Create" /> 
    </p> 
} 

所以,我的下一個問題是如何使由@Html創建文本框「緯度」。 EditorFor在表單中顯示已發佈的數據作爲其默認值。然後,用戶可以填寫其他字段,然後提交表單。

回答

0

按照HTTP標準,如果一個調用不改變網站的狀態(即數據),你應該使用GET請求。這意味着您應該爲用戶提供一個鏈接,其中包含正確的查詢字符串以在/ Events/Create頁面上填充表單。

另外,請記住,絕對不要將數據從視圖發送到MVC中查看。一切都經過控制器操作,因此請確保您對「事件」控制器的「創建」操作接受正確的參數來填充要提交的表單。如果在渲染視圖時Model.lat變量中有一個值,則文本框將被預填充該值。

0

爲什麼要將數據發佈到第二個表單?如果要顯示錶單並使用默認值加載它,請爲其創建一個GET操作方法,並在URL中傳遞默認值。雖然沒有什麼能阻止你爲同一視圖使用兩種POST方法,但通常的方法是使用GET加載表單,然後在編輯後POST回數據。

[HttpGet] 
public ActionResult Create(string lat) 
{ 
    MyView view = new MyView(); 
    view.lat = lat; 
    View(view); 
} 

[HttpPost] 
public ActionResult Create(MyView view) 
{ 
    //process posted data after editing 
} 

此處的視圖對象是一個ViewModel類,它包含您將在窗體上編輯的數據的屬性。將您的視圖強制鍵入此ViewModel類型。

從您的jQuery(上面)調用GET方法:

window.location = "Events/Create?lat=myValue"; 
+0

@保羅......我默認的意思是,在形式的字段(即LAT)將通過用戶的行爲來確定一個特定的頁面... ...使事情變得清晰,這裏緯度是緯度,這是用戶在地圖上點擊的緯度值...所以'默認'可能是一個用詞不當的人 – avinash

+0

@avinash,我想我明白你的意思。您希望將lat的值從用戶點擊地圖的頁面傳遞到Create視圖。我的解決方案將會這樣做。 –

相關問題