ActionResult
ユーザーの選択に基づいて、の生地のように作成したいと思います。
私の質問は、それがより一般的な方法で、または少なくとも即興で行うことができるかどうかです。
私はそれがうまくいったことを確認するだけです。
これが私のコードです。
<p>A Partial Control that is initialized on Server-Side</p>
@{
<h2>@ViewBag.InitializeUserControl</h2>
Html.RenderAction("ShowGadget",new { actionName = (string)@ViewBag.InitializeUserControl } );
}
public class HomeController : Controller
{
public ActionResult Index()
{
@ViewBag.InitializeUserControl = "InitializeUserControl2"; // IT GOES FROM A DATABASE
return View(new HomeModel());
}
public ActionResult ShowGadget(string actionName)
{
var gadgetPresenter = new GadgetPresenter();
return gadgetPresenter.GetActionResult(actionName);
}
}
public class GadgetPresenter : Controller
{
public ActionResult GetActionResult(string actionName)
{
if (string.IsNullOrEmpty(actionName))
{
return DefaultUserControl();
}
else
{
if (actionName.Equals("InitializeUserControl"))
{
return InitializeUserControl();
}
else if (actionName.Equals("InitializeUserControl2"))
{
return InitializeUserControl2();
}
else
return DefaultUserControl();
}
}
public ActionResult InitializeUserControl2()
{
ColorModel colorModel = new ColorModel
{
Width = 100,
Height = 100,
RGBColor = "#FF0000"
};
return PartialView("UserControls/ColorBlockUserControl2", colorModel);
}
public ActionResult InitializeUserControl()
{
ColorModel colorModel = new ColorModel
{
Width = 200,
Height = 200,
RGBColor = "#FF0000"
};
return PartialView("UserControls/ColorBlockUserControl", colorModel);
}
public ActionResult DefaultUserControl()
{
return PartialView("UserControls/DummyControl");
}
}