访问来自外部网址的请求

时间:2015-09-24 15:24:44

标签: c# .net asp.net-mvc razor umbraco7

您好,我是umbraco MVC的新手。我正在使用版本7.我想要做的是:

外部页面www.ble1.com发布到我的页面www.le2.com/recieve当发生这种情况时,ble1发布到页面并且在浏览器开发工具中我可以看到参数的表单数据名称(tok) )和一些编码的字符串。

现在我想获取这些数据并将其发送到我的页面www.le2.com/recieve上运行的宏后面的控制器代码。这怎么可能?我曾经在asp.NET中工作,我在代码中有pageLoad函数,但是我很困惑如何在Umbraco MVC中解决这个问题。

到目前为止,我所做的是创建cshtml:

@inherits Umbraco.Web.Macros.PartialViewMacroPage

<script type="text/javascript">
    $(document).ready(function () {
    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: '../../../umbraco/surface/land/Login',
        data: JSON.stringify({}),
        dataType: 'json',
        success: function (data) {
            alert(data);
        },
        error: function (data) {
            alert(data.d);
        }
    });

});
</script>


My Controller 

public JsonResult Login()
{
//Don't know what to do here!!!!  
//Everything that I have tryed has failed.  Calling Request....etc.
}

1 个答案:

答案 0 :(得分:1)

我从未与Umbraco合作过,但我和MVC合作过。

  1. Login方法未标记为接收POST请求。您需要使用属性[HttpPost]
  2. 您的Login方法没有任何参数,因此,即使您修复了问题#1,它也不会获得任何数据。
  3. 因此,首先,您需要在Action方法中使用一些数据,因此您需要一个ViewModel或一组或多个参数,这是一个ViewModel示例:

    public class MyLoginViewModel
    {
        public string UserName { get; set; }
        public string Password { get; set; }
    }
    

    现在我们在Action Method中使用ViewModel:

    [HttpPost]
    public JsonResult Login(MyLoginViewModel model)
    {
        if (ModelState.IsValid)
        {
            // Do something here (probably use Umbraco internal's authorization layer)
            var valid = (model.UserName == "user" && model.Password == "pwd");
    
            if (valid)
                return Json(new { code = 0, message = "OK" });
            else
                return Json(new { code = 10, message = "User/Password does not match" });
        }
        // Model is invalid, report error
        return Json(new { code = -1, message = "invalid arguments" });
    }
    

    这是一个非常天真的例子,它确保ViewModel是有效的,如果是,它执行实际的登录逻辑,在这个示例中只检查2个值并返回状态。

    在HTML页面中,您可以:

    <input type="text" id="userName" />
    <input type="text" id="password" />
    <button id="login">Login</button>
    
    <script>
        $(document).ready(function () {
            $("#login").click(function () {
                $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: '/home/Login',
                    data: JSON.stringify({ UserName: $('#userName').val(), Password: $('#password').val() }),
                    dataType: 'json',
                    success: function (data) {
                        alert(data.message);
                    },
                    error: function (data) {
                        alert("An error has occurred while processing your request");
                    }
                });
            })
        });
    </script>
    

    再次,这是一个天真的例子。

    我希望它能为您提供足够的信息以使其适应Umbraco。

    抱歉,我无法向您提供Umbraco的具体信息。