我有一个AJAX表单,其中url id需要来自JavaScript。
@using(Ajax.BeginForm("Add","Comments", new { ArticleID = 3 }, new AjaxOptions { UpdateTargetId="Comments"}))其中应替换ArticleID = 3,以便将ArticleID值设置为被调用的Javascript函数的结果。有点像
JS:
function GetArticleID()
{
return 3;
}Razor:
@using(Ajax.BeginForm("Add","Comments", new { ArticleID = GetArticleID() }, new AjaxOptions { UpdateTargetId="Comments"}))控制器:
public ActionResult Add(int ArticleID, Comment model)
{
}如何使用JavaScript函数结果作为BeginForm参数?
发布于 2016-07-16 22:22:35
行@using(Ajax.BeginForm("将由剃刀在服务器上执行。当时,它不了解客户端浏览器中的javascript方法。因此,您不能在那里混合javascript函数。
我更喜欢编写干净的自定义代码来完成ajax表单提交(而不是使用Ajax.BeginForm),因为它允许我定制任何我想要的方式。
保持您的形式作为一个正常的形式。
@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()方法获取表单的序列化版本。
$(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);
});
});
});https://stackoverflow.com/questions/38416135
复制相似问题