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

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

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

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

 

 

 

...全文
348 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
清风明月9987321 2024-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 数据了。

小野马1209 2024-06-27
  • 举报
回复
@清风明月9987321 感谢!
yn951193705 2024-06-27
  • 打赏
  • 举报
回复

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

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

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

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

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

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

太空漫步11 2024-06-26
  • 打赏
  • 举报
回复

view(resultjsonstr)改成JsonResult(resultjsonstr)

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

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

小野马1209 2024-06-26
  • 举报
回复
@Malex2024 我建的是一个Mvc的项目,请问下具体是在哪指定呢
Malex2024 2024-06-26
  • 举报
回复
@小野马1209 控制器类的上面
资源下载链接为: https://pan.quark.cn/s/9ce3e35e0f39 本项目专注于C# MVC框架与Entity Framework(EF)的结合应用,同时引入WebAPI作为接口层。它为初学者提供了一个完整的学习案例,涵盖数据库操作的核心功能:新增、修改和删除数据C# MVC是一种设计模式,用于构建易于维护和测试的Web应用。它将应用分为模型(Model)、视图(View)和控制器(Controller)三部分。模型负责处理业务逻辑和数据管理;视图用于展示用户界面;控制器则协调用户输入、模型和视图之间的交互。Entity Framework是一种ORM框架,允许开发者以面向对象的方式操作数据库,无需编写SQL语句,从而提高开发效率。在项目中,通过创建继承自DbContext的数据库上下文类来连接数据库,并配置Web.config文件中的连接字符串。控制器中的方法可以处理HTTP请求,并利用EF执行数据操作。例如,添加学生数据的方法如下: WebAPI是.NET Framework的一部分,用于构建RESTful服务,允许前端或其他客户端通过API数据库交互。在项目中,可以创建一个StudentsController,包含处理GET、POST、PUT和DELETE请求的方法,实现CRUD操作。例如: 前端(View)通常通过AJAX技术调用WebAPI,实现异步数据交互,例如使用jQuery的$.ajax或现代JavaScript库(如axios或fetch)发起HTTP请求,获取或更新数据,并在页面上进行显示或更新。在实际项目中,还需要考虑错误处理、权限控制、数据验证、分页、排序等功能。这个项目作为初学者的DEMO,提供了一个基础的结构,有助于理解这些技术如何协同工作,从而更好地掌握C# Web开发。

111,092

社区成员

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

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

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