首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC Ajax.BeginForm JavaScript参数

MVC Ajax.BeginForm JavaScript参数
EN

Stack Overflow用户
提问于 2016-07-16 22:13:44
回答 1查看 2.5K关注 0票数 2

我有一个AJAX表单,其中url id需要来自JavaScript。

代码语言:javascript
复制
@using(Ajax.BeginForm("Add","Comments", new { ArticleID = 3 }, new AjaxOptions { UpdateTargetId="Comments"}))

其中应替换ArticleID = 3,以便将ArticleID值设置为被调用的Javascript函数的结果。有点像

JS:

代码语言:javascript
复制
function GetArticleID()
{
      return 3;
}

Razor:

代码语言:javascript
复制
@using(Ajax.BeginForm("Add","Comments", new { ArticleID = GetArticleID() }, new AjaxOptions { UpdateTargetId="Comments"}))

控制器:

代码语言:javascript
复制
public ActionResult Add(int ArticleID, Comment model)
{

}

如何使用JavaScript函数结果作为BeginForm参数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-16 22:22:35

@using(Ajax.BeginForm("将由剃刀在服务器上执行。当时,它不了解客户端浏览器中的javascript方法。因此,您不能在那里混合javascript函数。

我更喜欢编写干净的自定义代码来完成ajax表单提交(而不是使用Ajax.BeginForm),因为它允许我定制任何我想要的方式。

保持您的形式作为一个正常的形式。

代码语言:javascript
复制
@using(Html.BeginForm("Add","Comments"))
{
   <input type="hidden" name="ArticleId" id="ArticleId" value=""/>
   <input name="CommentText" type="text" />
   <input type="submit" id="saveCmntBtn" />
}

现在听听提交按钮的click事件。将ArticleId值分配给输入字段,获取表单的序列化版本并将其发送到服务器。您可以使用jQuery serialize()方法获取表单的序列化版本。

代码语言:javascript
复制
$(function(){

  $("#saveCmntBtn").click(function(e){
     e.preventDefault();
     $("#ArticleId").val(GetArticleID());
     var f=$(this).closest("form");
     $.post(f.attr("action"),f.serialize(),function(res){
       $("#Comments").append(res);
     });
  });

});
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38416135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档