将数据从 MVC 发布到 WebApi
Posted
技术标签:
【中文标题】将数据从 MVC 发布到 WebApi【英文标题】:Posting data from MVC to WebApi 【发布时间】:2018-07-12 13:41:05 【问题描述】:我正在学习 MVC
和 WEB API
我在 MVC 中有 Controller
,它调用 Web Api 以进行进一步的操作。我已经成功地将数据从 API 检索到控制器,但我无法将数据从控制器发布到 API。
在 DAL 部分,我应该将我的值与参数放在哪里。我的数据库是 Oracle
我如何在 API 中获取数据,因为我仍在学习是否需要对此代码进行任何改进,我们将非常感谢您的建议。
我的 MVC 控制器
[HttpPost]
public ActionResult Create(Models.DeviceType device)
HttpResponseMessage response;
try
using (var httpClient = new HttpClient())
httpClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
response = httpClient.PostAsync(ApiUrl + "DeviceTypeApi/AddDeviceType", device, new JsonMediaTypeFormatter()).Result;
response.EnsureSuccessStatusCode();
return View("GetAllDeviceTypes");
catch (Exception ex)
return View();
API 控制器
[HttpPost, ActionName("AddDeviceType")]
public HttpResponseMessage AddDeviceType()
objDeviceBL = new DeviceBL();
HttpResponseMessage response;
try
var deviceResponse = objDeviceBL.AddDeviceType(); //this will further move it to business logic
if (deviceResponse != null)
response = Request.CreateResponse<List<Models.DeviceType>>(HttpStatusCode.OK, deviceResponse);
else
response = new HttpResponseMessage(HttpStatusCode.NotFound);
catch (Exception ex)
response = Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message);
return response;
BL
internal new List<Models.DeviceType> AddDeviceType()
return base.AddDeviceType();
核心
protected List<DeviceType> AddDeviceType()
List<DeviceType> objDeviceTypes = null;
try
objDeviceTypes = new DeviceDAL().AddDeviceType();
catch (Exception ex)
throw ex;
return objDeviceTypes;
DAL
public List<DeviceType> AddDeviceType()
List<DeviceType> objDeviceTypes = new List<DeviceType>();
using (cmd = new OracleCommand("SP_DMS_DEVICE_TYPE_INSERT", con))
try
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("p_typename", OracleType.VarChar).Direction = ParameterDirection.Input;
cmd.Parameters.Add("p_createdby", OracleType.Int32).Direction = ParameterDirection.Input;
cmd.Parameters.Add("p_createdon", OracleType.DateTime).Direction = ParameterDirection.Input;
cmd.Parameters.Add("p_updatedby", OracleType.Int32).Direction = ParameterDirection.Input;
cmd.Parameters.Add("p_updatedon", OracleType.DateTime).Direction = ParameterDirection.Input;
con.Open();
adap = new OracleDataAdapter();
adap.InsertCommand = cmd;
catch (Exception)
con.Close();
return objDeviceTypes;
【问题讨论】:
【参考方案1】:只需更改您的 api 控制器操作:
[HttpPost, ActionName("AddDeviceType")]
public HttpResponseMessage AddDeviceType(Models.DeviceType device)
//Here You can manipulate with device object
ASP 将为您将设备对象从请求 json 映射到 c# 对象。
【讨论】:
以上是关于将数据从 MVC 发布到 WebApi的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ajax get 将数据从 View 传递到 Controller 或使用参数在 mvc 中发布
无法将数据从视图发送到控制器 Action .NET MVC