1

コントローラのオブジェクトに保存している値を出力したかったのです。答えを探してみましたが、適切な答えが見つかりませんでした。助けてください

//my code in control  

 public ActionResult PrintOutput()
        {
                ModalClass myObject = new ModalClass              
                myObject.load(str);
                ViewBag.myOject = myOject.ToString();
                return View("PositionPrint");
        }




   //In view page I have created a **PartialView**. Inside partial view I
   // have given below code alone


         @Html.Raw(@ViewBag.myOject) 
4

2 に答える 2

2

object を変数名として使用することはできません。これは言語のキーワードです。コントローラーは通常、ビュー バッグまたはカスタム モデルからのデータが取り込まれたビューを返すことによって、値を「出力」します。生のhtml文字列を印刷するだけの場合-@Html.Raw(myObject)

コントローラーのアクションでは、タフです。ビューがアクセスできるように、値をどこかに置く必要があります。例えば:

public ActionResult PrintOutput(sting str)
{
   Modalclass myObject = new Modalclass(); 
   myObject.load(str);

   ViewBag.myObject = myObject; //probably at least ToString() call is due here
   return View();
}

ビューでは、その@Html.Raw(@ViewBag.myObject)内容を印刷するために使用します。

PSしかし、オブジェクト全体の内容を印刷しようとするべきではありません。それはかなり無意味な行為です。(デバッグを除く) 具体的に。オブジェクトの各データ プロパティは、ビューの特定の UI 要素に出力する必要があります。

于 2012-08-02T07:33:33.563 に答える
0

ViewBag可能な限り、やのような動的魔法変数を避けるようにしてくださいViewData。これらのMagic変数は、コードを醜くします。常に強いタイプを使用するようにしてください

あなたの意見のために持ってViewModelいます。例:顧客に関する詳細を印刷する場合。このようにViewModel(これは単なるPOCOです)を作成できます

public class CustomerPrint
{
  public string FirstName { set;get;}
  public string JobTitle { set;get;}
}

次に、コントローラーアクションで、これの値を設定し、それをビューに渡します。

public ActionResult PrintOutput()
{ 
  var customerPrintVM=new CustomerPrint();
  customerPrintVM.FirstName="Jon";
  customerPrintVM.JobTitle="Developer";
  return View(customerPrintVM);
}

CustomerPrintクラスのオブジェクトを渡すため、ビューはこのクラスに強く型付けする必要があります。したがって、このようにビューを変更します。

@model CustomerPrint

<h2>This is your view content</h2>
<p>@Model.FirstName</p>
<p>@Model.JobTitle</p>
@Html.Raw(Model.FirstName)

ViewModelクラスが名前空間にある場合は、最初に次のようにクラスへのフルパスを指定する必要があります。

@model YourNameSpaceName.CustomerPrint

Model.PropertyNameこの形式(例:)でモデルのプロパティにアクセスできます。Model.FirstNameかみそりでは@、式がまだコードブロック内にない場合に使用する必要があります。

于 2012-08-02T13:14:00.270 に答える