如何用引号构建一个字符串?

时间:2015-11-12 15:08:29

标签: c# asp.net-mvc

我知道网站上可能已存在此类问题,但所提供的解决方案都没有帮助我。

我想在MVC中构建一个动态的ActionResult。我使用以下课程:

public class MyMenu
{
public string Action {get;set;}
public string Controller {get; set;}
public string Area {get;set;}
}

行动是:

public ActionResult OpenView(string btn)
{
var model=_repository.MyMenu.Get(btn);
area="new {Area=" + "\"" + model.Area + "\"}"; 

return RedirectToAction(model.Action, model.Controller,area);
}

为了让我的行动正常运作,该区域必须完全像:

 area= new {Area="Home"}

模型返回如下区域: model.Area = Home

请你帮我解决一下吗?

修改

我需要提供更多信息:

您建议使用此功能:

var area = string.Format(" new {{Area = \" {0} \"}}",model.Area);

无效,因为这一行:

返回RedirectToAction(model.Action,model.Controller,area);

看到像{Area = \" Home \"}这样的区域,由于这个原因我找不到页面(错误404)。

如果我将区域写入Debug,是的,我收到了我期望的内容,但是我的行动不起作用。

你还有其他想法吗?

编辑2:

我的问题与构建字符串无关(我期待)。基于我所做的所有试验,我得出的结论是我需要使用If / elseIf语句或开关来提供该区域。

我确信必须以某种方式连接动作内部的字符串和引号,当我发现它时,我会在这里发布它。

**Edit 3:** 

我找到了问题的答案,即:

 return RedirectToAction(model.Action, model.Controller, new RouteValueDictionary(new { Area = model.Area }));

我现在意识到,我的问题不正确,我的案例中的一个好问题可能是:如何像RootValue一样传递区域!!!。 我不知道我是否可以改变这个问题,或者......

1 个答案:

答案 0 :(得分:3)

要在使用string.Format时逃避括号,您需要使用{{}}

area = String.Format("new {{ Area = \"{0}\" }}", model.Area);

String.Format("new {{ Area = \"{0}\" }}", "Home");的结果是new { Area = "Home" }

修改

请尝试以下代码:

return RedirectToAction(model.Action, model.Controller, new { Area = model.Area });