我在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.");
});
});
});
你正在做一个 POST
请求,但从你的控制器动作方法来看,它看起来像是一个 GET
. 因此,改变你的API调用 $.post('/RegisterCode/Register', { code: code.val() },
到 $.get('/RegisterCode/Register', { code: code.val() },
可能并在你的动作方法中明确使用HTTP动词。
[HttpGet]
public async Task<ActionResult> Register(string code)
{
}
解决了,我的RegisterCode.css文件与RegisterCode.js文件同名,我觉得这似乎在Bundle.config中检索数据时造成了一些混乱,所以我把.js文件重命名了,现在可以用了