3

NET MVC 在使用 javascript 确认后尝试回发,这是按钮:

<input type="submit" id ="RemoveStatus" value="Remove Status" name="button" onclick="return CheckRemove();"/>

这是我的 CheckRemove() js 函数中的 javascript:

var button1 = document.getElementById("RemoveStatus");

     if (confirm("Are you sure you want to remove status?") == true) 
                {
                    button1.disabled = true;
                    button1.value = "Removing status...";
                    __doPostBack('RemoveStatus', '');
                    return true;


                }
                else 
                {
                    return false;
                }

但由于某种原因,我在 __doPostBack 位得到一个对象预期错误,我已经明确设置了 id,button1 在调试中也被填充,我尝试将 button1.id 和 button1 也传递到 __doPostBack 调用中,但它不会回发和一直说预期的对象,有什么想法吗?

4

3 回答 3

4

您在 MVC 中没有回传的概念,就像您在 Web 表单中那样。只需使用即可nameoftheform.submit();

http://www.javascript-coder.com/javascript-form/javascript-form-submit.phtml

您可以使用以下内容在表单标签中生成 id:

<% using (Html.BeginForm("Create", "Test", FormMethod.Post, new {id="myForm"})) {%>

并在脚本中使用:

document.getElementById('myForm').submit();

就个人而言,我是 jQuery 的粉丝,因此最后一个可以重写为:

$('#myForm').submit();
于 2010-07-23T10:04:09.710 回答
0

使用Jquery 提交功能。

一个很好的例子可以在这里找到 不要忘记做一个:return:false; 否则表单将发布两次:一次来自 jquery,一次来自表单中的按钮调用。

另一个不错的功能是,在您的 MVC 操作(在您的控制器中)中,如果您使用一个模型,您可以捕获您的模型。如果您将模型绑定到文本字段等,您将获得更新的模型,因此您不必解析表单集合。

我从我的一个项目中得到了一些代码。

我有一个存储在 db 中的页面对象。

当我创建我的视图时,我选择了强类型-> 页面对象,它给了我:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<LIB.Data.Page>" %>

我将模型绑定到文本框:

<legend>Fields</legend>
<div class="editor-field">
    <%=Html.TextBoxFor(model => model.Title)%>
</div>

在我的控制器中,我这样做:

[HttpPost]
    [ValidateInput(false)]
    public ActionResult Create(Page model, FormCollection collection)
    {
        PageService.AddPage((string)Session["lang"], model);
        return RedirectToAction("Index", new { menuGuid = model.MenuGuid });
    }

我放在文本字段中的所有内容都绑定到我在控制器中检索并存储的模型

于 2010-07-23T10:53:05.723 回答
0

尝试像这样进行jquery提交

$("#RemoveStatus").submit();

它对我有用

于 2010-07-23T10:05:55.073 回答