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。这些魔法变量让你的代码变得丑陋。始终尝试使用强类型

ViewModel你的看法。例如:如果您想打印有关客户的详细信息。您可以像这样创建一个 ViewModel (它只是一个 POCO)

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

现在在您的 Controller 操作中,设置 this 的值并将其传递给您的视图。

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 回答