Если у меня есть такой объект:
public class StatisticsRequest
{
public string Level { get; set; }
public string Analysis { get; set; }
...more properties
}
Тогда я могу объявить контроллер MVC2 следующим образом?:
public ActionResult GetResponseStats(StatisticsRequest statsRequest)
и получить параметры моей строки запроса, автоматически проанализированные в моемпользовательский объект?
Это не работает для меня - вы можете это сделать?
Редактировать:
Это весь мой класс контроллера:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Tradeshow.Models;
namespace Tradeshow.Controllers
{
[Authorize]
public class DashboardController : Controller
{
public ActionResult GetResponseStats(StatisticsRequest statsRequest)// string profileid, string analysis, string question, string answer, string omitheaders)
{
Tradeshow.Models.Mongo mongo = new Models.Mongo();
// For top-level requests that don't specify the analysis, use the previously requested top-level analysis
if (statsRequest.IsTopLevelRequest)
{
if (statsRequest.Analysis == null || statsRequest.Analysis.Length == 0)
{
statsRequest.Analysis = (String)Session["statsanalysistype"];
}
else
{
Session["statsanalysistype"] = statsRequest.Analysis;
}
}
string clientdatabasename = (String)Session["clientdatabasename"];
Dashboard dashboard = mongo.BuildResponseDashboard(clientdatabasename,statsRequest);
return PartialView("ProfileDashboard",dashboard);
}
}
}
Это весь мой объект StatisticsRequest:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Tradeshow.Models
{
/// <summary>
/// Encapsulates the properties that make up a statistics request for generating one or more graphs and charts
/// </summary>
public class StatisticsRequest
{
public string Level { get; set; }
public string Analysis { get; set; }
public string ProfileId { get; set; }
public string Question { get; set; }
public string Answer { get; set; }
public string TimespanFormat { get; set; }
public string TimespanValue { get; set; }
public bool OmitHeaders
{
get
{
bool rc = false;
if (String.Compare(Level, "profile", true) == 0) rc = true;
return rc;
}
}
public bool IsTopLevelRequest
{
get
{
bool rc = false;
if (String.Compare(Level, "profile", true) == 0) rc = true;
return rc;
}
}
}
}
И самая простая тестовая строка запроса (которая не работает) выглядит так:
/Dashboard/GetResponseStats?profileid=123&unique=775765
Много времени толькоодин или два параметра будут переданы в строку запроса.
Edit2
Еще один момент - объект StatisticsRequest является просто произвольным объектом и не имеет ничего общегос моделью просмотра.Я создал объект StatisticsRequest исключительно для инкапсуляции запроса, а не для поддержки представлений на основе форм и т. Д.