我想使用jQuery的对话框来替换我现在在ASP.NET MVC应用程序中使用的一些代码。旧代码使用具有不同“值”设置的“提交”按钮。我也想知道是否有更好的方法。
以下是视图中现有代码的示例:
<%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>
<% } %>控制器需要按下submit按钮的值:
[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
}
});});
发布于 2009-08-19 22:16:40
我只是简单地浏览了一下你的问题,虽然我认为你试图做的事情是可行的,但我不认为这是正确的方式。
整个想法应该是分离关注点。我认为,如果你开始将功能组合成一个单独的动作,那么这个动作就有可能变得拥挤和难以维护。
我认为你应该尝试更多地采用这样一种模型,即每个提交按钮都会调用自己的jQuery ActionResult。这会导致关注点的分离,保持ActionResult的整洁和整洁,并清理您的代码。
你没有理由不能从动作结果中调用另一个封装了所有提交按钮动作的方法,但之后你又回到了混乱的黑暗道路上。
此外,我刚刚注意到你的对话框窗口做了相当多的工作,它也有被弄乱的风险。我,这只是我个人的观点,我宁愿有三个对话窗口,每个对话窗口都做自己的事情。我有我的css设置,所以那里的变化可以反映所有的变化。然后,每个对话框都会将post发送到自己的ActionResult。
如果我把你的问题弄错了,请让我知道,我会尽力帮助你。
https://stackoverflow.com/questions/1302341
复制相似问题