所以我是一个非常新的ASP.NET MVC,几个月前我参加了一个介绍ASP.NET,不幸遗忘了几乎所有内容:(
我被赋予了一个任务,即向页面添加一个查找按钮,该页面从文本框中获取用户名并验证该用户名是否有效。
我花了好几个小时试图让它发挥作用。不幸的是,我需要做的就是坐下来几周并重新自学并学习javascript,jquery,asp.net mvc。我将学习这一切,但这项任务是小而具体的,花费数周学习语言和框架才开始解决。
我在这里:
控制器结构:
public class NewUserRequestController : Controller
{
// GET: NewUserRequest
public ActionResult Index()
{
return View(new NewUserRequest());
}
[HttpPost]
[ValidateAntiForgeryToken()]
public ActionResult LookupLDN(ITFormsLibrary.NewUserRequest req)
{
//Code that Verifies user etc
return View(req);
}
[HttpPost]
[ValidateAntiForgeryToken()]
public ActionResult Submit(ITFormsLibrary.NewUserRequest req)
{
//Code that handles submission validation & errorvalidation
return View("Index", req);
}
}
现在在视图中,我试过搞乱:
@using((Ajax.BeginForm("LookupLDN", "NewUserRequest", FormMethod.Post, new AjaxOptions { UpdateTargetId = "NewUserIfo"}, new { @class = "form-inline", role = "form" }))
发现我无法嵌套表格。
我试过了:
@Ajax.ActionLink("Lookup", "LookupLDN", "NewUserRequest", new { Model},null, new { @class = "form-inline", role = "form" })
和
@HTML.ActionLink("Lookup", "LookupLDN", "NewUserRequest", new { Model})
由于某种原因,两者都返回404.
我也尝试过:
<input type="button" value="Lookup" onclick="return lookupLDN()"/>
但是,我不知道如何构造一个javascript语句来处理异步POST? - 我是否应该尝试发帖?
如果你们中的任何人理解我想要完成的事情并且可以提供帮助,我将非常感激。谢谢!
答案 0 :(得分:3)
JSON怎么样?
已编辑 根据Tommy的评论。使用POST而不是GET。
它应该是POST方法,因为您要将数据发送到服务器 并要求它对该数据(POST)采取行动,而不仅仅是询问 服务器给我们提供信息而不发送任何信息(GET)。 使用POST,您可以在CSRF令牌周围添加检查,不必担心 关于Googlebot做某些不应该做的事情等等。
HTML(VIEW)
<input type="button" id="btnLookupUser" value="Lookup" />
<强> JAVASCRIPT 强>
$(document).ready(function () {
$('#btnLookupUser').click(function () {
var vUsername= $('#txtUserName').val();
if (vUsername.trim() == '') {
return;
}
else
{
//URL to your JSON method. (here I suppose you have a LookupUser action method. Change application path the way it works for you.)
$.ajax({
url: applicationPath + '/LookupUser',
type: 'POST',
dataType: 'json',
data: { userName: encodeURIComponent(vUsername.trim()),
cache: false,
success: function (result) {
//Do your logic based on the result.
switch (result) {
case true:
break;
default:
break;
}
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
})
});
});
CONTROLLER
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult LookupUser(string userName)
{
//Your logic
return Json("Whether is valid or not"); //You can as well deny GET here.
}