ASP.NET MVC ActionResult POST没有提交

时间:2015-11-12 22:04:33

标签: javascript c# asp.net asp.net-mvc-4 razor

所以我是一个非常新的ASP.NET MVC,几个月前我参加了一个介绍ASP.NET,不幸遗忘了几乎所有内容:(

我被赋予了一个任务,即向页面添加一个查找按钮,该页面从文本框中获取用户名并验证该用户名是否有效。 Image

enter image description here

我花了好几个小时试图让它发挥作用。不幸的是,我需要做的就是坐下来几周并重新自学并学习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? - 我是否应该尝试发帖?

如果你们中的任何人理解我想要完成的事情并且可以提供帮助,我将非常感激。谢谢!

1 个答案:

答案 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.
}