2014-10-03 4 views
0

나는 MVC에 대한 완전한 초보자이므로 모든 사용자에게 유용한 정보를 전달하기 위해 노력하고 있습니다. 사용되는 코드는 다음과 같습니다. MVC 컨트롤러에 localPath 보내기


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> 
} 

Controller  

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

는 희망 그 문제를 볼 충분하다.

건배들

+0

이보기를 볼 때 HTML에있는 내용은 무엇입니까? 컨트롤러에 무엇이 게시됩니까? – CodeCaster

+0

HTML에서 과 같은 숨겨진 모양이 나타납니다. 게시물은 디버그를 실행할 때 컨트롤러에 설정된 값을 갖지만 URL은 NULL로 설정됩니다. –

답변

0

왜 당신이 모델을받는 대신에 요청에서 URL을 얻을하지 않습니다? 내 컨트롤러에서

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

그게 저에게 요청 URL이 아닌 응답 URL 인 "/ ToDo/AddMini"를 제공합니다. 그것은 의미가있는 "/ Property/Edit/3"희망을 보내야합니다. –

+0

OK, 알겠습니다. GET 및 POST 요청이 동일한 URL에 대해 이루어진 것 같습니다. –

+0

부분적으로 처리하고 있습니다. –

0

사용

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

그리고

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

가 작동 올바른 값이 속성을 URL로 지정되어 있는지 확인해야보기

, 로컬 경로는 것이다 호스트 이름 뒤에 오는 경로. 내가 리터를 사용하는 경우 내 경우는 /홈/을 반환 ocalhost : 3934/홈 그냥 locahhost 경우 : 포트/ 다음 를 반환 "/"경우

당신은하고 싶지 않아 모델에 URL을 추가하면 뷰 내부에서 사용중인 모든 속성을 포함해야하는 ViewModel 클래스를 만들어야합니다.

+0

이것은 더 이해가되지만 부분적으로는 Index()를 사용하지 않으므로 숨겨진 부분에 추가하려고합니다. –

+0

요청 개체는 어떤보기에서도 사용할 수 있어야합니다. 그것은 @ Html.HiddenFor 당신이 사용하는 방식으로 문제가 있어요. – RAJ

+0

필자가 내 대답에 추가 한 것처럼 특정보기에 항상 ViewModel을 사용하여 컨트롤러에 해당 ViewModel을 채우고 해당 viewmodel을보기 위해 전달할 수 있습니다. – RAJ

관련 문제