2009-08-19 67 views
0

我想用jQuery的對話框替換我現在在ASP.NET MVC應用程序中使用的一些代碼。舊代碼使用「提交」按鈕,使用不同的「值」設置。我想知道如果有更好的方法。如何使用jQuery對話框使用不同值的按鈕提交

這是視圖內現有的代碼的一個例子:

 <%using (Html.BeginForm("SubmitValue", "MyController", FormMethod.Post)) 
    { %> 
     <span class="field-description">My Value: </span> 
     <input id="myTextValue" maxlength="6" name="myValue" type="text"/> 
     <%=Html.Hidden("myModel.myProperty1", Model.PropertyValue1) %> 
     <%=Html.Hidden("myModel.myProperty2", Model.PropertyValue2) %> 
     <div class="pageaction button"> 
      <strong> 
       <input name="submitButton" type="submit" value="Save"/> 
      </strong> 
      <strong> 
       <input name="submitButton" type="submit" value="Delete"/> 
      </strong> 
      <strong> 
       <input type="button" value="Cancel" /> 
      </strong> 
     </div> 
    <% } %> 

控制器將需要按下提交按鈕的值:

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult SubmitValue(MyModel model, string submitButton) 
    { 
     _request.myProperty1= model.PropertyValue1; 
     _request.myProperty2= model.PropertyValue2; 
     if (submitButton == "Save") 
     {_myService.UpdateValue(_request);} 
     else 
     {_myService.DeleteValue(_request);} 

     return View("MyView", _request); 
    } 

對於jQuery UI的,我喜歡使用代碼的「按鈕」部分來處理提交值。

$(function() { 
$("#dialogWindow").dialog({ 
    bgiframe: true, 
    autoOpen: false, 
    height: 200, 
    modal: true, 
    open: function(e, ui) {    
     $("#dialogWindow :input[name='myValue']").val(currentValue); 
    }, 
    buttons: { 
     'Save': function() { 
      // TODO: submit as if a submit button with the value 'Save' is used 
      $(this).dialog('close'); 
     }, 
     'Delete': function() { 
      // TODO: submit as if a submit button with the value 'Delete' is used 
      $(this).dialog('close'); 
     }, 

     Cancel: function() { 
      $(this).dialog('close'); 
     } 
    }, 
    close: function() { 
     //close code 
    } 
}); 

});

回答

0

我剛剛對您的問題進行了簡短的介紹,儘管我認爲您所要做的是可以做到的,但我認爲這不是正確的做法。

整個想法應該是有關心的分離。我認爲,如果你開始採用單一行動的成套功能,那麼該行動有可能變得擁擠並且難以維護。

我認爲你應該嘗試更多的模型,其中每個提交按鈕都會調用它自己的jQuery ActionResult。然後導致問題的分離,使ActionResult保持整潔和整潔你的代碼。

沒有理由爲什麼你不能那麼,從操作的結果,調用哪個封裝了所有的提交按鈕行動,但隨後你的標題背下來的黑暗之路雜亂的另一種方法。

另外我剛剛注意到,你的對話框窗口做了很多,它也冒着混亂的風險。我,這只是個人觀點,寧願有三個對話窗口,每個窗口都做自己的事情。我會有我的CSS設置,所以在那裏發生的變化反映了所有這些。然後每個對話框會對其自己的ActionResult做一個帖子。

如果我把你的問題搞錯了,那就讓我知道,我會盡力幫助你。

相關問題