mvc html post参数,每个帖子请求的ASP MVC - Html.Action [post]触发

我在我创建的网站上有一份简报订阅表(它是布局的一部分),我在layout.cshtml文件中使用Html.Action()来调用我的订阅()动作方法。该方法有两个'版本:一个用于获取,另一个用于发布请求。

问题:

每当提交任何其他表单时,都会调用Subscribe()POST操作方法 - 我不想这样:只有当有人点击“订阅”时才会调用它。按钮(然后有一个ajax调用来更新页面而不重新加载)

例如,在我的联系人页面中,当我提交表单时,也会调用Subscribe()post方法

我不确定为什么会这样,但我相信这是因为有一个帖子请求,因此我的Subscribe()POST方法被自动调用而不是Subscribe()GET one.I尝试使用Html .Partial for this,但它不起作用,因为我必须通过layout.cshtml文件将模型传递给局部视图

_layout.cshtml:

// more code

@Html.Action("Subscribe", "Newsletter", new { area = "" })

// mode code

NewsletterController:

public ActionResult Subscribe() {

NewsletterSubscribeVM model = new NewsletterSubscribeVM();

return PartialView("NewsletterSubscription", model);

}

/// always gets called, even when it shouldn't

[HttpPost, ValidateAntiForgeryToken]

public ActionResult Subscribe(NewsletterSubscribeVM subscriber) {

string message;

if (!ModelState.IsValid) {

message = "Ops! Something went wrong.";

return Json(message, JsonRequestBehavior.AllowGet);

}

Newsletter sub = new Newsletter { Email = subscriber.SubscriberEmail };

this._service.Add(sub);

message = "Thank you for subscribing!";

return Json(message, JsonRequestBehavior.AllowGet);

}

}

NewsletterSubscription.chtml

@model Web.ViewModels.NewsletterSubscribeVM

@using (Html.BeginForm("Subscribe", "Newsletter", new { area = "" }, FormMethod.Post, new { id = "newsletter-form", @class = "col-xs-12" })) {

@Html.AntiForgeryToken()

@Html.Label("Subcribe!", new { id = "newsletter-msg", @class = "col-xs-12 no-padding" })

@Html.TextBoxFor(m => m.SubscriberEmail, new { placeholder = "Email", @class = "col-xs-7", id = "newsletter-box" })

}

使用Javascript:

$('#newsletter-btn').click(function (e) {

var form = $('#newsletter-form');

e.preventDefault();

// if the user has inserted at least one character and the 'thank you' msg isn't showing yet:

if ($('#newsletter-box').val().length != 0 && $('#subscription-status-msg').length == 0) {

$.ajax({

method: "POST",

url: "/newsletter/subscribe",

data: form.serialize(),

dataType: "json",

success: function(data) {

$('

' + data + '
').appendTo($("#newsletter-form")).hide().fadeIn(500);

}

})

}

})

提前致谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值