Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net MVC 1.0 Ajax.BeginForm()在Html.BeginForm()中提交_Asp.net_Asp.net Mvc_Ajax - Fatal编程技术网

Asp.net MVC 1.0 Ajax.BeginForm()在Html.BeginForm()中提交

Asp.net MVC 1.0 Ajax.BeginForm()在Html.BeginForm()中提交,asp.net,asp.net-mvc,ajax,Asp.net,Asp.net Mvc,Ajax,我有一个在我的应用程序中创建新帐户的视图。此视图以Html.BeginForm开始,并点击正确的控制器,不会产生任何问题 我决定添加一个Ajax.BeginForm,以便确保我的应用程序中不存在同名的帐户 当我使用任意一个按钮单击submit时,它将转到同一个控制器Create。为了尝试区分单击了哪个提交按钮,我检查请求是否是Ajax,然后尝试运行不同的代码路径。但是Request.IsAjaxRequest不会启动。使用MS Ajax在现有表单中实现此功能的最佳选择是什么 <% usin

我有一个在我的应用程序中创建新帐户的视图。此视图以Html.BeginForm开始,并点击正确的控制器,不会产生任何问题

我决定添加一个Ajax.BeginForm,以便确保我的应用程序中不存在同名的帐户

当我使用任意一个按钮单击submit时,它将转到同一个控制器Create。为了尝试区分单击了哪个提交按钮,我检查请求是否是Ajax,然后尝试运行不同的代码路径。但是Request.IsAjaxRequest不会启动。使用MS Ajax在现有表单中实现此功能的最佳选择是什么

<% using (Html.BeginForm()) {%>
           ..............
  <% using(Ajax.BeginForm("Echo", 
     new AjaxOptions() { UpdateTargetId = "EchoTarget" })) 
  { %>    
     Echo the following text: 
  <%=Html.TextBox("echo", null, new { size = 40 })%>
  <input type="submit" value="Echo" />
  <% } %>   
  <div id="EchoTarget">
控制器代码:

[AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Create(User newUser)
    {
        if (Request.IsAjaxRequest())
        {
            return Content("*you hit the ajax button");
        }
        else
        { //regular create code here.....
        }
  </div>

无论如何生成表单,都不能在任何HTML页面中嵌套表单。它不是有效的HTML,浏览器可能无法正确处理它。必须使表单成为同级而不是子级。

无论如何生成表单,都不能在任何HTML页面中嵌套表单。它不是有效的HTML,浏览器可能无法正确处理它。您必须使窗体成为同级而不是子级。

如果您坚持使用多个窗体,请在类似这样的函数中使用Javascript

<SCRIPT>
  function InnerFormSubmitter(dataForm, actionForm) {
  actionForm.innerHTML = dataForm.innerHTML;
  actionForm.submit();      
 }
</SCRIPT>

<form name="yourButton" action="ValidateSomething" method="post"></form>

<form name="mainForm" action="SavedData" method="post">
<input type="textbox" name="text1">
<input type="textbox" name="text2">
<button name="validateUserButton" id="FormButton" onChange=
"InnerFormSubmitter  (this.form, document.getElementById('yourButton'))">

</button>
  </form>
jQuery的进一步更新:

而不是

document.getElementById('UserIdent').value
你可以用

$('#UserIdent').val();
关于JSON用法的更新

JsonResult类应在控制器中使用,并在视图中使用$.getJson函数

$(function() {
    $('#yourLinkOrButton').click(function() {
        $.getJSON("<CONTROLLER>/GetUserAvailability/", null, function(data) {
            $("#yourDivorLablel").<yourFunctionToUpdateDiv>(data);
        });
     });

  public JsonResult GetUserAvailability()
    {
        //do all validation and retrieval
        //return JsonResult type

    }

如果您坚持使用多个表单,请在如下函数中使用Javascript

<SCRIPT>
  function InnerFormSubmitter(dataForm, actionForm) {
  actionForm.innerHTML = dataForm.innerHTML;
  actionForm.submit();      
 }
</SCRIPT>

<form name="yourButton" action="ValidateSomething" method="post"></form>

<form name="mainForm" action="SavedData" method="post">
<input type="textbox" name="text1">
<input type="textbox" name="text2">
<button name="validateUserButton" id="FormButton" onChange=
"InnerFormSubmitter  (this.form, document.getElementById('yourButton'))">

</button>
  </form>
jQuery的进一步更新:

而不是

document.getElementById('UserIdent').value
你可以用

$('#UserIdent').val();
关于JSON用法的更新

JsonResult类应在控制器中使用,并在视图中使用$.getJson函数

$(function() {
    $('#yourLinkOrButton').click(function() {
        $.getJSON("<CONTROLLER>/GetUserAvailability/", null, function(data) {
            $("#yourDivorLablel").<yourFunctionToUpdateDiv>(data);
        });
     });

  public JsonResult GetUserAvailability()
    {
        //do all validation and retrieval
        //return JsonResult type

    }

是的,这就解决了。谢谢你的澄清!现在,我最初的问题仍然是,我如何在第一个表单中放置一个按钮,它可以运行并执行一个控制器而无需回发?您可以使用JavaScript来完成。即,带有onclick处理程序的按钮。或者你可以把表格放在彼此旁边,而不是一个放在另一个里面。或者一些绝对定位巫术把表格b放在表格a里面。是的,这就解决了它。谢谢你的澄清!现在,我最初的问题仍然是,我如何在第一个表单中放置一个按钮,它可以运行并执行一个控制器而无需回发?您可以使用JavaScript来完成。即,带有onclick处理程序的按钮。或者你可以把表格放在彼此旁边,而不是一个放在另一个里面。或者用绝对定位巫术把表格b放在表格a里面。你也可以探索使用iFrame的可能性。多种形式真的不是问题。只是把它们嵌套起来才是一个问题,这根本就没有必要。如果你打算使用JS,你也可以直接编写一篇文章,而不是使用HTML表单。完美优雅的解决方案是在将jQuerypowerhorse连接到MVC购物车后使用JSON请求机制!您还可以探索使用iFrame的可能性。多种形式真的不是问题。只是把它们嵌套起来才是一个问题,这根本就没有必要。如果你打算使用JS,你也可以直接编写一篇文章,而不是使用HTML表单。完美优雅的解决方案是在将jQuerypowerhorse连接到MVC购物车后使用JSON请求机制!