C#不包含'内容'的定义。

时间:2018-03-26 08:10:26

标签: xml asp.net-mvc asp.net-web-api

我创建了一个接受用户输入为xml的服务,如果缺少任何参数,我必须返回一个视图,允许用户输入缺失的详细信息。

所以我认为使用api控制器返回视图是不可能的,所以我使用了mvc控制器。但是当我读取xml时会显示以下错误。

  

C#不包含'内容'的定义没有扩展方法'内容'可以找到接受类型的第一个参数(你是否缺少using指令或汇编引用?)

这是我的代码

public class MyController : Controller 
{
   public IHttpActionResult MyService([FromUri] TestProperty testProperty)
    {
       string DataXML = this.Request.Content.ReadAsStringAsync().Result;
    }
}

我的问题是

1.如何解决这个错误?

2.有没有其他方法可以使用api控制器来满足我的需求?将视图返回给用户并接受xml。

1 个答案:

答案 0 :(得分:3)

请注意,cr.execute("SELECT id FROM stock_move WHERE origin=%s", (po_name,)) s_moves = cr.fetchall() return { 'name': _('Name'), 'view_type': 'form', 'view_mode': 'tree,form', 'res_model': 'Model.Name', 'view_id': False, 'views': [(False,'tree'),(False,'form'),], 'domain': [('id', 'in', s_moves)] 'type': 'ir.actions.act_window', } Content HttpRequestMessage不在ApiController HttpRequestBase

Controller

如果您想使用Request.Content.ReadAsStringAsync(),您的控制器应继承自ApiController(Web API),而不是继承自Controller。

如果您想阅读MVC控制器中的内容,可以尝试以下内容。

string content = "";
System.Web.HttpContext.Current.Request.InputStream.Position = 0;
 using (var reader = new StreamReader(
          Request.InputStream, System.Text.Encoding.UTF8, true, 4096, true))
      {
         content = reader.ReadToEnd();
      }
 //Rest
 System.Web.HttpContext.Current.Request.InputStream.Position = 0;