在JavaScriptjquery和c#的实现上遇到了问题。

问题描述 投票:0回答:1

我在udemy上学习了3年的c#课程,但无法解决关于javascriptjquery代码实现的问题。我想把注册代码(通过jqueryjavascript)和订阅连接起来,但是我的文本框不管插入什么信息都不工作,不显示任何文本,应该显示不同的信息,比如-无法注册代码,代码被成功添加。这是我的代码。

RegisterCodeController:

public class RegisterCodeController : Controller
{       
   public async Task<ActionResult> Register(string code)
    {            
        if(Request.IsAuthenticated)
        {
            var userId = HttpContext.GetUserId();
            var registred = await SubscriptionExtension.RegisterUserSubscriptionCode(userId, code);
            if (!registred) throw new ApplicationException();

            return PartialView("_RegisterCodePartial");
        }
        return View();
    }

_RegisterCodePartial:

@if(Request.IsAuthenticated)
{
<div class="panel panel-primary register-code-panel">
    <div class="panel-heading">
        <h4 class="panel-title">Register Code</h4>
    </div>
    <div class="panel-body input-group">
        <input type="text" class="form-control" placeholder="Enter code here..." />
        <button class="btn btn-primary input-group-btn" type="button" >Submit
            <h3 class="panel-title">Submit</h3>
        </button>
    </div>
    <div class="alert alert-danger hidden">Could not register code</div> 
</div> 
}

注册码.js

$(function () {
var code = $(".register-code-panel input");

function displayMessage(success, message)
{
    var alert_div = $(".register-code-panel .alert");
    alert_div.txt(message);
    if (success)
        alert_div.removeClass('alert-danger').addClass('alert-success');
    else
        alert_div.removeClass('alert-success').addClass('alert-danger');

    alert_div.removeClass('hidden');
}

$(".register-code-panel button").click(function (e) {
    $(".register-code-panel .alert").addClass('hidden');
    if (code.val().length == 0)
    {
        displayMessage(false, "Enter a code");
        return;
    }
    $.post('/RegisterCode/Register', { code: code.val() },
        function (data)
        {
            displayMessage(true, "The code was successfully added. /n/r Please reload the page.");
            code.val('');
        }).fail(function (xlr, status, error) {
            displayMessage(false, "Could not register the code.");
        });
});

});
javascript c# jquery
1个回答
0
投票

你正在做一个 POST 请求,但从你的控制器动作方法来看,它看起来像是一个 GET. 因此,改变你的API调用 $.post('/RegisterCode/Register', { code: code.val() },$.get('/RegisterCode/Register', { code: code.val() }, 可能并在你的动作方法中明确使用HTTP动词。

[HttpGet]
public async Task<ActionResult> Register(string code)
{ 
} 

0
投票

解决了,我的RegisterCode.css文件与RegisterCode.js文件同名,我觉得这似乎在Bundle.config中检索数据时造成了一些混乱,所以我把.js文件重命名了,现在可以用了

© www.soinside.com 2019 - 2024. All rights reserved.