0

電子メールをパラメーターとして受け入れるようにコントローラーのアクションを作成するにはどうすればよいですか。

これらは私が持っているルートです

routes.MapRoute(
                name: "infoNewsletterSignup",
                url: "info/SubscribeToNewsLetter/{email}",
                defaults: new { controller = "Info", action = "SubscribeToNewsLetter", email =UrlParameter.Optional});

            routes.MapRoute(
              name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Info", action = "Index", id = UrlParameter.Optional }
            );

これは私のコントローラーです。

[HttpPost]
public string SubscribeToNewsLetter(string email)
{
   return "Thanks!\n\nYou have successfully subscribed for our newsletter.";
}

そしてこれが私の見解です

<td>
<input type="text" class="text-bx-foot" value="" id='newsLetterEmail' name='newsLetterEmail'></td>
<td>
<input name="Go" type="button" class="go-btn" value="Go" id="btnSubscribeToNewsLetters"></td>

$(document).ready(function () {
$("#btnSubscribeToNewsLetters").click(subscribeToNewsLetters);
});

function subscribeToNewsLetters() {
var objInputEmail = $("#newsLetterEmail");
if (objInputEmail != null) {
    var id = objInputEmail.val();
    if (id != null) {
        $.ajax({
            type: 'POST',
            url: '/Info/SubscribeToNewsLetter/' + id,
            //data: $('#form').serialize(),
            contentType: "application/json; charset=utf-8",
            traditional: true,
            success: subscribed,
            error: errorInSubscribing
        });
    }
}
}

function subscribed(data, textStatus, xhr) {
alert(data);
}

function errorInSubscribing(jqXHR, textStatus, errorThrown) {
alert(textStatus);
}

通常のテキストと同じように値を入力すると、アクションが呼び出されます。しかし、'myname@test.co.uk' のような値を入力しようとすると、'404 not found' エラーが発生します。

4

1 に答える 1

1

このように送信するのはどうですか:

 $.ajax({
                type: 'POST',
                url: '/Info/SubscribeToNewsLetter',
                data: {"email" : Id },
                contentType: "application/json; charset=utf-8",
                traditional: true,
                success: subscribed,
                error: errorInSubscribing
            });

編集 :

二重引用符で囲んでみてください。

 $.ajax({
                type: 'POST',
                url: '/Info/SubscribeToNewsLetter',
                 data: '{"email" : "' + Id + '"}',
                contentType: "application/json; charset=utf-8",
                traditional: true,
                success: subscribed,
                error: errorInSubscribing
            });
于 2012-11-13T18:59:41.410 に答える