在MVC中Javascript onclick __dopostback没有回发

时间:2010-07-23 09:58:56

标签: javascript asp.net asp.net-mvc postback dopostback

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

<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调用但是它不会回发并不断说出预期的对象,任何想法?

3 个答案:

答案 0 :(得分:4)

你没有像在webforms中那样在MVC中使用回发​​的概念。只需使用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();

答案 1 :(得分:0)

尝试像这样做jquery提交

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

它与我合作

答案 2 :(得分:0)

使用Jquery submit功能。

可以找到一个很好的例子here 别忘了做一个:return:false;否则表格将发布两次: 一次来自jquery,一次来自表单中的按钮调用。

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

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

我有一个存储在db。

中的页面对象

当我创建视图时,我选择了强类型 - &gt;页面对象 这让我:

<%@ 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 });
    }

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