Razor .NETCore(3.0)MVC-如何重定向到其他视图/.cshtml页面? 我有一个名为WxJS.cshtml的视图。我使用JavaScript获取JSON数据。该JSON数据被发送到Wx控制器 Wx控制器操纵JSON数据,使用Twilio我得到一条文本消息——这清楚地表明代码在这个控制器中工作

Razor .NETCore(3.0)MVC-如何重定向到其他视图/.cshtml页面? 我有一个名为WxJS.cshtml的视图。我使用JavaScript获取JSON数据。该JSON数据被发送到Wx控制器 Wx控制器操纵JSON数据,使用Twilio我得到一条文本消息——这清楚地表明代码在这个控制器中工作,razor,asp.net-core-mvc,Razor,Asp.net Core Mvc,我要问的问题是,如何让Wx控制器从WxJS.cshtml Razor视图重定向到Wx.cshtml Razor视图以显示该数据 我已经在Wx.chstml页面上设置了一个断点——程序控制进入该断点——从我所知道的情况来看,这是最后一个被命中的断点。也就是说,Wx.chstml页面不会加载,浏览器会继续显示WxJS.cshtml页面 我错过了一些东西(可能是显而易见的),因为我已经为这个问题寻找了几个小时的解决方案:-( 提前谢谢!!:-) WxJS剃须刀视图 <!doctype h

我要问的问题是,如何让Wx控制器从WxJS.cshtml Razor视图重定向到Wx.cshtml Razor视图以显示该数据

我已经在Wx.chstml页面上设置了一个断点——程序控制进入该断点——从我所知道的情况来看,这是最后一个被命中的断点。也就是说,Wx.chstml页面不会加载,浏览器会继续显示WxJS.cshtml页面

我错过了一些东西(可能是显而易见的),因为我已经为这个问题寻找了几个小时的解决方案:-(

提前谢谢!!:-) WxJS剃须刀视图

    <!doctype html>
<title>Example</title>

<script>
    var xhr = new XMLHttpRequest();
    var url = "https://cors-anywhere.herokuapp.com/https://www.511virginia.org/data/geojson/icons.rwis.geojson";


    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4 && xhr.status == 200) {
            var jsonData = JSON.parse(xhr.responseText);
            showWeather(jsonData);
        }
    };
    xhr.open("GET", url, true);
    xhr.send();

    function showWeather(data) {
        var output = "<ul>";
        var i;
        for (var i in data.features) {
           output += "<li>" + data.features[i].id  + "</li>";
        }
        output += "</ul>";
        document.getElementById("wxList").innerHTML = output;



        $.ajax({
            url: '/Home/Wx/',
            data: JSON.stringify(data),
            type: 'POST',
            traditional: true,
            contentType: 'application/json',
            success: function (data) {
                $('#message').html("Success!");
            }
        });




    }</script>


<div id="wxList"></div>

** Home WX Controller **

     [HttpPost]
        public IActionResult Wx([FromBody] RootObject data)
        {


            System.Net.WebClient client = new System.Net.WebClient();

            List<ConcerningWeatherData> WxStatDataList = new List<ConcerningWeatherData>();



            RootObjectItteration ObjItteratrion = new RootObjectItteration();
            WxStatDataList = ObjItteratrion.ItterateThroughRootObjectSettingValues(data, WxStatDataList);
            List<ConcerningWeatherData> SortedList = new List<ConcerningWeatherData>();
            try
            {
                SortedList = WxStatDataList.OrderBy(o => o.indexId).ToList();
                ViewBag.WxStatDataList = SortedList;

            }
            catch (Exception ex)
            { ex.ToString(); }




            try
            {
                TwilioSendText SendText = new TwilioSendText();
                string sendToUser = SendText.ParseThroughWhatWxToSendUser(SortedList);

                TwilioSendText numbers = new TwilioSendText();
                List<String> listOfPhoneNumbers = new List<String>();
                listOfPhoneNumbers = numbers.listOfPhoneNumbersToSendTo(listOfPhoneNumbers);

                // TURN TWILIO SEND TEXT ON OR OFF HERE:
                SendText.sendTextMessages(sendToUser, listOfPhoneNumbers);
            }
            catch (Exception ex)
            { ex.ToString(); }


            //return View();
            return View("Wx", "Home");


            //return View();
            // return Redirect("https://localhost:5001/Home/Wx.cshtml");



        }

实例
var xhr=new XMLHttpRequest();
变量url=”https://cors-anywhere.herokuapp.com/https://www.511virginia.org/data/geojson/icons.rwis.geojson";
xhr.onreadystatechange=函数(){
如果(xhr.readyState==4&&xhr.status==200){
var jsonData=JSON.parse(xhr.responseText);
showWeather(jsonData);
}
};
xhr.open(“GET”,url,true);
xhr.send();
函数showWeather(数据){
var输出=“
    ”; var i; for(data.features中的var i){ 输出+=“
  • ”+数据.features[i].id+“
  • ”; } 输出+=“
”; document.getElementById(“wxList”).innerHTML=输出; $.ajax({ url:“/Home/Wx/”, 数据:JSON.stringify(数据), 键入:“POST”, 传统的:是的, contentType:'应用程序/json', 成功:功能(数据){ $('#message').html(“Success!”); } }); } **家庭WX控制器** [HttpPost] 公共IActionResult Wx([FromBody]根对象数据) { System.Net.WebClient client=新系统.Net.WebClient(); List WxStatDataList=新列表(); rootObjectTerration objitTerrarion=新的rootObjectTerration(); WxStatDataList=ObjItteratrion.ItterateThroughRootObject设置值(数据,WxStatDataList); List SortedList=新列表(); 尝试 { SortedList=WxStatDataList.OrderBy(o=>o.indexId.ToList(); ViewBag.WxStatDataList=SortedList; } 捕获(例外情况除外) {ex.ToString();} 尝试 { TwilioSendText SendText=新TwilioSendText(); 字符串sendToUser=SendText.ParseThroughWhatWxToSendUser(SortedList); TwilioSendText编号=新TwilioSendText(); List listOfPhoneNumbers=新列表(); listOfPhoneNumbers=numbers.ListOfPhoneNumberToSendTo(listOfPhoneNumbers); //在此处打开或关闭TWILIO发送文本: SendText.sendTextMessages(sendToUser,电话号码列表); } 捕获(例外情况除外) {ex.ToString();} //返回视图(); 返回视图(“Wx”、“主视图”); //返回视图(); //返回重定向(“https://localhost:5001/Home/Wx.cshtml"); }
以及我试图让控制器指向Wx.cshtml的视图 (我有一个相同的Weather.cshtml页面,当我使用.NET Core填充JSON时,它会显示这个Weather.cshtml页面)同样,Twilio会向我发送一个包含所有数据的文本,因此我知道JSON解析正在工作

    @{
    ViewData["Title"] = "C-Ville West";@*Privacy Policywas Privacy.cshtml*@
}
@*<h1>@ViewData["Title"]</h1>*@

<p></p>
@* loop over viewbag object *@
@foreach (var x in ViewBag.WxStatDataList)

{
    // wx station name & description
    <b>@x.description @x.name</b> @Html.Raw("<font color=#A9A9A9>(") @x.id @Html.Raw(")</font><br />")


    // check station for bad / dangerous weather
     @*x.weather_station_has_potentially_dangerous_weather @Html.Raw("<br />")*@
    @if (@x.weather_station_has_potentially_dangerous_weather == true)
    {
        // then output any potentially dangerous weather
     @Html.Raw("<font color=#ff0000>")@x.weather_stations_potentially_dangerous_conditions @Html.Raw("</font><br />");
    }

    // visibility
    if (x.dont_show_visibility == false)
    {
        if (@x.visibility_show_value == true && @x.visibility_at_onePointTwoMiles_message_showTF == false)
        {
        @x.visibility  @Html.Raw(" visibility<br />")
        }
        else if (@x.visibility_at_onePointTwoMiles_message_showTF = true)
        {
        @x.visibility_at_onePointTwoMiles_message @Html.Raw(" visibility<br />")
        }
        else
        {
        @x.visibility_inoperative.ToString() @Html.Raw("<br />")
        }
    }
    else
    {
         @x.visibility_inoperative.ToString() @Html.Raw("<br />")
    }

    // air temp
    if (x.dont_show_air_temperature ==false)
    {
        if (@x.air_temperature_show_value == true)
        {
        @x.air_temperature @Html.Raw("&#176; air temperature<br />")
        }
        else
        {
        @x.air_temperature_inoperative.ToString() @Html.Raw("<br />")
        }
    }

    // surface temp
    if (@x.dont_show_surface_temperature == false)
    {
        if (@x.surface_temperature_show_value == true)
        {
        @x.surface_temperature  @Html.Raw("&#176; surface temperature<br />")
        }
        else
        {
        @x.surface_temperature_inoperative.ToString() @Html.Raw("<br />")
        }

    }
    // surface conditions
    if (@x.dont_show_surface_condition == false)
    {
    @x.surface_condition @Html.Raw("<br />")
    }

    // dewpoint
    if (@x.dewwpoint_temperature_show_value == true)
    {
        @x.dewpoint_temperature  @Html.Raw("&#176; dewpoint temperature<br />")
    }
    else
    {
        @x.dewpoint_temperature_inoperative @Html.Raw("<br />")
    }

    // relative humidity
    if (@x.relative_humidity_show_value == true)
    {
        @x.relative_humidity @Html.Raw("&#8453: relative humidity<br />")
    }
    else
    {
        @x.relative_humidity_inoperative @Html.Raw("<br />")
    }

    // wind direction -- speed -- gusts to
    if (@x.dont_show_wind == false)
    {
        @x.all_wind_data @Html.Raw("<br />")
    }




}

@*measurements in disclaimer*@
Temperatures in Fahrenheit, windpeeds in MPH. @Html.Raw("<br />") 
@{
ViewData[“Title”]=“C-Ville West”@*隐私政策was Privacy.cshtml*@
}
@*@ViewData[“标题”]*@

@*在viewbag对象上循环*@ @foreach(ViewBag.WxStatDataList中的变量x) { //wx站名称和说明 @x、 description@x.name@Html.Raw(“”@x.id@Html.Raw(“)
”) //检查车站是否有恶劣/危险天气 @*x、 天气站有潜在的危险天气@Html.Raw(
)*@ @如果(@x.weather\u站\u有潜在危险\u天气==真) { //然后输出任何潜在的危险天气 @Html.Raw(“”)@x.weather\u stations\u潜在危险\u conditions@Html.Raw(“
”); } //可见度 如果(x.dont\u show\u visibility==false) { 如果(@x.visibility\u show\u value==true&&@x.visibility\u at\u onePointTwoMiles\u message\u showTF==false) { @x、 可见性@Html.Raw(“可见性
”) } 否则如果(@x.visibility_at_onePointTwoMiles_message_showTF=true) { @x、 可视性(在@Html.Raw(可视性
)上显示) } 其他的 { @x、 可见性\u.ToString()@Html.Raw(
) } } 其他的 { @x、 可见性\u.ToString()@Html.Raw(
) } //空气温度 如果(x.不显示空气温度==假) { 如果(@x.air\u temperature\u show\u value==true) { @x、 空气温度@Html.Raw(°;空气温度
) } 其他的 { @x、 空气温度不工作。ToString()@Html.Raw(“
”) } } //表面温度 如果(@x.not\u show\u surface\u temperature==false) { 如果(@x.surface\u temperature\u show\u value==true) { @x、 表面温度@Html.Raw(°;表面温度
) } 其他的 { @x、 表面温度不工作。ToString()@Html.Raw(“
”) } } //表面状况 如果(@x.dont\u show\u surface\u condition==false) { @x、 表面条件@Html.Raw(
) } //露点 如果(@x.dewwpoint_temperature_show_value==true) { @x、 露点温度@Html.Raw(°;露点温度
) } E
[HttpPost]
public IActionResult Wx()
{

    ViewBag.WxStatDataList = SortedList;
    return View();
}
<div id="test"></div>

<script>
    $(function() {
    $.ajax({
            url: '/Home/Wx/',
            type: 'POST',
            //...
            contentType: 'application/json',
            success: function (data) {
                $("#test").html(data);
            }
        });
});
[HttpPost]
public void TestWx()
{
     //...
     var SortedList = WxStatDataList.OrderBy(o => o.indexId).ToList();
     HttpContext.Session.SetObject("ComplexObject", SortedList);
     //no need to return View()...
}

[HttpGet]
public IActionResult Wx()
{
    ViewBag.WxStatDataList= HttpContext.Session.GetObject<List<ConcerningWeatherData>>("ComplexObject");
    return View();
}
<script>
    $(function() {
    $.ajax({
            url: '/Home/TestWx/',  //change this
            type: 'POST',
            //..
            contentType: 'application/json',
            success: function (data) {
                window.location.href = "/Home/Wx"; //redirect to Wx.cshtml
            }
        });
});    
</script>
using System.Text.Json;
public static class SessionExtensions
{
    public static void SetObject(this ISession session, string key, object value)
    {
        session.SetString(key, JsonSerializer.Serialize(value));
    }

    public static T GetObject<T>(this ISession session, string key)
    {
        var value = session.GetString(key);
        return value == null ? default(T) : JsonSerializer.Deserialize<T>(value);
    }
}
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();
    services.AddSession();
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{        
    app.UseHttpsRedirection();
    app.UseStaticFiles();

    app.UseSession();
    //...

}