MVC将localPath发送到Controller

时间:2014-10-03 14:15:28

标签: c# .net asp.net-mvc

我是MVC的完全新手,所以任何提示等都会有很长的路要走,只是试图传回当前的用户网上但没有运气的网址。正在使用的代码如下。

Controller    

public string AddMini(TodoMini todo)
{
    return todo.URL;
}

View

@using (Html.BeginForm("AddMini", "ToDo", FormMethod.Post)){
    <li>
        @Html.HiddenFor(p => p.URL, Request.Url.LocalPath)
        <div class="form-group">
            @Html.TextBoxFor(p => p.Description, new { @class = "form-control", @placeholder = "Add To-Do items", @autocomplete = "off" })
        </div>
    </li>
    <li>
        <div class="form-group">
            <button type="submit" class="btn btn-primary">Submit</button>
        </div>
    </li>
}

希望这足以看出问题所在。

干杯球员

2 个答案:

答案 0 :(得分:0)

为什么不从请求中获取Url而不是在模型中接收它?

public string AddMini(TodoMini todo)
{
    var url = HttpContext.Current.Request.Url;
    //Rest of the POST logic
}

答案 1 :(得分:0)

使用

在我的控制器中

        public ActionResult Index()
    {
        var todo = new TodoMini() {URL = Request.Url.LocalPath};
        return View(todo);
    }

在视图中

@Html.HiddenFor(x=> x.URL)

应该有效,确保为Url属性分配了正确的值,本地路径只会在主机名之后返回路径。在我的情况下,如果我使用l ocalhost:3934 / Home ,如果只是 locahhost:port / ,则返回 / Home / 然后返回&#34; /&#34;

如果您不想将Url添加到模型中,则应创建一个ViewModel类,该类应包含您在视图中使用的所有属性。