私の最初のMVC 3アプリ(カミソリで)の状況をどのように処理するかについては迷っています。2つのパーシャルビューと2つのモデルで表示
ユーザーが作成した目標のリストを表示するページがあります。そのページで、ユーザーはゴールをクリックし、ゴール詳細画面に移動します。この画面には、ゴールの詳細(ゴール名、説明、ステータス)が表示されます。また、その目標とその詳細(アクティビティ名、ステータス)につながるアクティビティを示します。
「目標」モデルと「ilpActivity」モデルのアクティビティの目標があります。 2は、目標の主キーによって接続されている - > goalID
私は2つのpartialviewsを持っている:_activitiesはilpActivityモデルを必要としながら、_displayGoalと_activities は明らか_displayGoalはゴールモデルを必要とします。
これらのそれぞれは、編集を許可するフォームへのajax呼び出しを使用します(アクティビティの作成も可能です)。
私の主な見解では、goalDetails、私は目標モデルを参照しています。
私の問題 - 別のモデルを使用しているため、_activitiesへの@ Html.Partial呼び出しを使用することはできません。私はRenderActionを使用してそのハードルをクリアしたと考えました - しかし、それはFirefoxで動作しますが、IEのキャッシュでは機能します。つまり、画面を更新しない限り、私が行った変更は見られません。
基本的には、2つのモデルを使用する2つの部分ビューを呼び出す必要があります。私はかなり読んだけど、物事を働かせるために苦労した。
キャッシングを無効にしますか? - これを試しましたが、継続時間= 0はエラーをスローする
両方のモデルを呼び出すモデルが必要ですか? - 私はモデルとコントローラーの中でどのように見えるのか分かりません。私は活動のリスト<を引っ張って1つの目標の詳細を引っ張っています。
私は混乱しており、お勧めできません。
マイモデル::ここにいくつかのコードです
namespace ILP.Models
{
public class goalsModel
{
#region services
public interface IGoalsService
{
goals GetGoal(int id);
List<ilpActivity> GetGoalActivities(int id);
}
public class AssetService : IGoalsService
{
private goalsDataClassesDataContext qDB;
/// <summary>
/// reference the data context
/// </summary>
public AssetService()
{
qDB = new goalsDataClassesDataContext();
}
#region IGoalsService Members
public goals GetGoal(int id)
{
return qDB.goals.Single(g => g.goalID == id);
}
public List<ilpActivity> GetGoalActivities (int id)
{
//return all activities for goal 'id'
return qDB.ilpActivities.Where(g => g.goalID == id).
OrderBy(g => g.activityName)
.ToList();
}
マイコントローラー:
[Authorize]
public ActionResult ViewGoal(int goalID)
{
goals goal;
try
{
goal = qService.GetGoal(goalID);
}
catch
{
goal = new goals();
}
return View(goal);
}
[Authorize]
public ActionResult _Activities(int goalID)
{
List<ilpActivity> activity;
try
{
activity = qService.GetGoalActivities(goalID);
}
catch
{
throw;
}
return PartialView(activity);
}
そして私の見解:まあ
@model ILP.Models.goals
<div id="thisGoal">
@*@{ Html.RenderPartial("_ActiveGoals", Model);}*@
@Html.Partial("_EditDisplay", Model)
</div>
<br />
<div id="activities">
@{Html.RenderAction("_Activities", "Home", Model.goalID);}
@*@Html.Partial("_Activities",Model)*@
</div>
両方でおそらくそれは、@ Html.RenderActionの機能ですか? - IEの場合でも、編集画面からの最初の投稿の表示を更新します。しかし、デバッグモードでは、コントローラの "_Activities"メソッドを再び呼び出すことはありません(ロード時と最初の編集時に呼び出します)。 –
それを実感!それは私のjavascriptだった...システムが私に(セルフポストに答えるために7時間以上) –