2012-08-02 32 views
1

我想打印存储在控制器对象中的值。我试图寻找答案,但我没有找到正确的答案。请帮助如何在控件中打印值 - MVC3

//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) 

回答

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)打印里面有什么。

P.S.但是你真的不应该尝试打印出整个对象的内容。这是一个毫无意义的行为。 (调试除外)具体。对象中的每个数据属性都应该打印到视图上的特定UI元素。

+0

感谢您的回复! [ViewBag._ObjectPM = _ObjectPM;]我已经给出了我上面提到的代码,并返回[返回视图(“PositionPrint”,_ObjectPM);]和部分视图页[@ Html.Raw(@ ViewBag._Object)] ..但是没有运气。我觉得我缺少一些东西 – Muthukumar 2012-08-02 09:33:19

+0

对象是什么。 Modal类的来源是什么?在问题主体中提供更多关于问题的代码,所以我们有一个材料inverstigate =) – 2012-08-02 12:17:16

+0

更新了我的完整代码。按照您的要求。请帮助 – Muthukumar 2012-08-02 13:02:29

0

只要可能,尽量避免动态魔术变量,如ViewBagViewData。这些Magic变量让你的代码变得丑陋。 总是尝试使用强类型

有一个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类驻留在命名空间中,你可能需要给FULLPATH到类第一喜欢这样

@model YourNameSpaceName.CustomerPrint 

您可以访问这个格式模型的属性Model.PropertyName(例如:Model.FirstName)和剃刀中,如果表达式不在代码块中,则需要使用@