C# webApi接口 Post数据,网页提示未找到视图或其模板视图

小野马1209 2024-06-25 16:08:35

C# webApi接口 MVC项目 将数据Post给对方后,出现以下报错,求告知要怎么调整,本人小白

如图:从报错结果看,数据已经Post成功了,不知道怎么显示View

 

 

 

...全文
269 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
清风明月9987321 06-27
精选
  • 打赏
  • 举报
回复 1

根据你提供的错误信息和代码示例,问题的关键在于你将 JSON 响应结果直接传递给了 View,这不是正确的用法。View 方法期望一个视图名称或一个模型对象,而不是一个 JSON 字符串。

为了正确处理这个问题,你需要将 JSON 数据解析为一个对象,并将其作为模型传递给视图。或者,如果你只是想显示 JSON 数据,可以直接返回 JSON 结果。

解决方法一:返回 JSON 结果
如果你只是想返回 JSON 数据,可以使用 Json 方法来返回结果。

public ActionResult Index()
{
string url = "https://sandbox.geelytravel.com/foroa/organization/pushCompanyInfo%22;
string token = GetToken();
string strjson = JsonConvert.SerializeObject(ReturnJsonResultCompany().Data);
strjson = HttpUtility.UrlDecode(strjson);
JObject jo = (JObject)JsonConvert.DeserializeObject(strjson);
string jsonstr = jo["data"].ToString();

SQLHelper helper = new SQLHelper();
string sql = "insert into WebAPI (token,UpdateTime) values(' " + token + " ', 20240625)";
helper.GetByNonQuery(sql);

string resultjsonstr = PostMethod(url, jsonstr, token);

// 使用 Json 方法返回 JSON 数据
return Json(resultjsonstr, JsonRequestBehavior.AllowGet);

}
解决方法二:解析 JSON 并传递给视图
如果你想在视图中展示 JSON 数据,可以将 JSON 数据解析为一个对象,并将其作为模型传递给视图。

首先,定义一个模型类来匹配你的 JSON 数据结构。例如:

public class ApiResponse
{
public string Message { get; set; }
public string Code { get; set; }
public ResultData Result { get; set; }
}

public class ResultData
{
public int SuccessCount { get; set; }
public int FailCount { get; set; }
public List FailRecords { get; set; }
}

public class FailRecord
{
public string CompanyCode { get; set; }
public string ErrorMessage { get; set; }
}
然后,在你的控制器中解析 JSON 数据并将其传递给视图:

public ActionResult Index()
{
string url = "https://sandbox.geelytravel.com/foroa/organization/pushCompanyInfo%22;
string token = GetToken();
string strjson = JsonConvert.SerializeObject(ReturnJsonResultCompany().Data);
strjson = HttpUtility.UrlDecode(strjson);
JObject jo = (JObject)JsonConvert.DeserializeObject(strjson);
string jsonstr = jo["data"].ToString();

SQLHelper helper = new SQLHelper();
string sql = "insert into WebAPI (token,UpdateTime) values(' " + token + " ', 20240625)";
helper.GetByNonQuery(sql);

string resultjsonstr = PostMethod(url, jsonstr, token);

// 解析 JSON 数据为对象
ApiResponse apiResponse = JsonConvert.DeserializeObject<ApiResponse>(resultjsonstr);

// 将对象传递给视图
return View(apiResponse);

}
在你的视图中,可以使用强类型视图来显示数据。例如,在 Index.cshtml 中:

@model YourNamespace.ApiResponse

API Response

Message: @Model.Message

Code: @Model.Code

Result

Success Count: @Model.Result.SuccessCount

Fail Count: @Model.Result.FailCount

@if (Model.Result.FailRecords != null && Model.Result.FailRecords.Any())
{

Fail Records



}
这样,你就可以在视图中正确地显示 JSON 数据了。

  • 举报
回复
@清风明月9987321 感谢!
  • 打赏
  • 举报
回复

定位定时器: 首先,检查代码中是否有一个全局变量或类成员保存了对定时器的引用,这可能是Windows::Threading::TimerQueueTimer或类似对象。

获取句柄或ID: 找到定时器后,你可能需要它的句柄(如果库提供了这样的接口)或者它的ID来停止它。这通常可以通过定时器对象的成员函数获取。

取消定时器: 使用获得的句柄或ID,调用cancel()、stop()或类似的方法来停止定时器。这取决于库的具体实现,例如在Windows API中可能是CloseHandle(timerHandle),而在WinRT中可能是timer.Cancel()。

清理资源: 如果定时器对象是动态分配的,记得将其从内存中释放,以防止内存泄漏。

处理异常: 在尝试取消定时器时,确保捕获任何可能出现的异常,如找不到句柄或无效操作。

日志和调试: 为了解决这类问题,记录相关的日志信息以便于追踪和解决问题。

  • 打赏
  • 举报
回复

view(resultjsonstr)改成JsonResult(resultjsonstr)

Malex2024 06-26
  • 举报
回复
@太空漫步11 如果该控制器只有此方法用来相应请求JSON,则将return View(resultjsonstr)改为JsonResult(resultjsonstr)
  • 举报
回复
@Malex2024 这个不行,我在ActionResult 中是将数据Post给别的系统,Post后,对方有返回Json字符串,我用return view,网页没反应,view(resultjsonstr) 就会出现上图的提示,看堆栈应该是要在home index.cshtml文件中做些配置才可以
Malex2024 06-25
  • 打赏
  • 举报
回复

在类上面价格属性 [ApiController],告诉系统你这个是API控制器,不是视图控制器

  • 举报
回复
@Malex2024 我建的是一个Mvc的项目,请问下具体是在哪指定呢
Malex2024 06-26
  • 举报
回复
@小野马1209 控制器类的上面

110,655

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧