asp.net .Net Razor页面-如何使用一些POST数据重定向到外部URL

yacmzcpb  于 2023-08-08  发布在  .NET
关注(0)|答案(1)|浏览(175)

我有一个.NET 6解决方案与2个Razor页面项目。它们被称为应用程序1和应用程序2。这两个应用程序在不同的端口号下运行。

我的目标:

我在Application1中有一个按钮,当单击时,我想将用户重定向到Application2,但我想将一些值从Application1发送到Application2。我不允许使用URL查询字符串,因为这些字符串很容易被操纵。

我所尝试的

我尝试使用这种方法在第二个应用程序中发布所需的值:

private static readonly HttpClient client = new HttpClient();

    public void OnPostRedirect()
    {
        string url = "https://localhost:7075/index";

        string MyDataFirstName = "Adam";
        string MyDataLanguage = "English";
        string MyDataTokenCode = "ABCD1234XYZ789";
        
        var values = new Dictionary<string, string>
        {
            { "firstname", MyDataFirstName },
            { "language", MyDataLanguage },
            { "tokencode", MyDataTokenCode }
        };

        var content = new FormUrlEncodedContent(values);

        var response = client.PostAsync(url, content).Result;       

        Response.Redirect(url);

    }

字符串

我的问题是:

1.这种方法可以吗?如果不是,那么什么才是正确的方法呢?
1.如何在第二个应用程序中检索这些值?我无法在那里检索这些值。我尝试在第二个应用程序中检查索引页的OnGet()方法中的Request对象。但我在那里找不到这些价值观。

u91tlkcl

u91tlkcl1#

需要创建一个模型来检索FormUrlEncodedContent,调用URL应该是“https://localhost:7075/home/index”,可能需要添加'.GetAwaiter().GetResult();“当在非异步方法中使用postasync时。
你可以试试下面的代码。
app1

public void test()
        {

            HttpClient client = new HttpClient();
            string url = "https://localhost:7181/home/index";

            string MyDataFirstName = "Adam";
            string MyDataLanguage = "English";
            string MyDataTokenCode = "ABCD1234XYZ789";

            var values = new Dictionary<string, string>
            {
                { "firstname", MyDataFirstName },
                { "language", MyDataLanguage },
                { "tokencode", MyDataTokenCode }
            };

            var content = new FormUrlEncodedContent(values);

            client.PostAsync(url, content).GetAwaiter().GetResult();    

            Response.Redirect(url);
        }

字符串
app2

public class MyModel
    {
        public string firstname { get; set; }
        public string language { get; set; }
        public string tokencode { get; set; }   
    }
    public class HomeController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }
        [HttpPost]
        public IActionResult Index([FromForm] MyModel model)
        {
            var firstname = model.firstname;
            Console.WriteLine(firstname); //you could see the value in CMD.
            return View();
        }
    }


测试项目
x1c 0d1x实际上,如果不使用JavaScript,您应该创建另一种方法而不是“index”来接收数据,然后将其保存到数据库。当app 1转到重定向到app 2/index的步骤时。你可以用索引方法从数据库中检索数据。

相关问题