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