Я не уверен, что мне не разрешено отправлять XML в контроллер; однако, сделав некоторые предположения о вашем сценарии (потому что вопрос немного расплывчатый), я получаю вывод по совершенно новому проекту MVC5 (и я не вижу причин полагать, что это не сработает в MVC4).
Шаги для воспроизведения:
1) Я создал таблицу в SSMS:
use test; -- a testing database I leave lying about
create table TestTable(StatusId int, SomeStuff nvarchar(max));
2) Я положил некоторые данные в этой таблице:
insert into TestTable(StatusId, SomeStuff) values (3, 'foo bar quux');
insert into TestTable(StatusId, SomeStuff) values (4, 'some other stuff');
3) Я написал proc для получения данных; В частности, я хотел посмотреть, что случилось, если бы я вернулся более одного результата, следовательно, мое небольшое расхождение с вашим примером SQL:
create procedure sp_xmlresult as
begin
declare @sql nvarchar(max);
set @sql='select * from TestTable where StatusId in(3,4) FOR XML AUTO, ROOT(''results'')'
EXECUTE sp_executesql @sql
end;
3) В моем MVC HomeController, добавить некоторый код следующим образом:
public ActionResult Index()
{
var builder = new SqlConnectionStringBuilder();
builder.DataSource = "localhost";
builder.IntegratedSecurity = true;
builder.InitialCatalog = "test";
XDocument doc = null;
using (var conn = new SqlConnection(builder.ConnectionString))
{
conn.Open();
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = "exec sp_xmlresult";
using (var reader = cmd.ExecuteReader())
{
if (reader.Read())
doc = XDocument.Parse(reader[0].ToString());
}
}
}
return View(doc);
}
4) Теперь, я хочу посмотреть, что я выберусь: Я поставил мой Index.cshtml в папке Home использовать XDocument в качестве модели и падение сбежавшего строкового представления прямо:
@model System.Xml.Linq.XDocument
...
@{ Write(Model.ToString()); }
и Я вижу t его выход на моей странице: < результаты > < TestTable StatusId = "3" SomeStuff = "Foo бар quux"/> < TestTable StatusId = "4" SomeStuff = "некоторые другие вещи"/> </Результаты >
что представляет особый интерес в том, что вы, вероятно, хотите, чтобы включить
, ROOT(''results'')'
часть технологич я очертить выше - в противном случае SQL Server возвращает документ с одним узлом в результате и без корневого узла, так XDocument имеет плохой день, анализируя это.
Я бы предположил, что более реалистичный проект будет делать что-то интересное с XML в действии Index(), но я все это не мог вообразить. Надеюсь это поможет.