项目目录中共享部分视图控制器的最佳位置在哪里?
我发现了类似的问题:ASP.NET MVC: Correct place for Partial Views?
我无法决定是否更好地执行/ Controller / Shared / CONTROLLER_FOR_PARTIAL_VIEW之类的操作,或者只创建其独立的文件夹,如/ Controller / CONTROLLER_FOR_PARTIAL_VIEW
部分视图专门用于dropdownlistfor,并且该模型不会用于填充下拉列表以外的任何内容。因此,如果一个站点有许多下拉列表或一般只有部分视图,共享文件夹似乎是最好的选择。如果它是共享文件夹的首选方式,您是为每个局部视图使用一个控制器,还是为所有局部视图使用一个控制器?感谢任何想法或反馈,谢谢!
编辑:要清楚,我特别询问了控制器的目录而不是VIEWS。谢谢!
答案 0 :(得分:2)
从某种意义上说,没关系。没有真正的标准或惯例,所以你可以自由地做到这一点,但它对你和你的应用程序最有意义。
将它放在像Controllers/Shared
这样的东西下可能有意义,如果有足够的这些值得和,它会增加价值,使它们与常规控制器分开。但是,就项目而言,所有基本上都是共享的,所以这里没有真正的区别。就个人而言,简单地将它命名为独特的东西可能是最好的路线。例如,我的一个项目中有许多子操作,这些操作在我的布局的各个部分中使用。结果,我创建了一个LayoutController
来容纳这些。
要记住的一件事是,如果您使用标准路由,任何控制器都可用于路由基础架构,无论它位于项目树中的哪个位置。您必须非常了解如何实现它,但如果您将共享控制器命名为SharedController
,那么使用标准路由,其操作将通过/shared/action
提供。对于像子操作这样的事情,使用[ChildActionOnly]
可以轻松解决这个问题。通过将该属性添加到子操作,它将与URL请求的路由基础结构分离。但是在内部,MVC仍然可以为了渲染视图而使用它。
答案 1 :(得分:1)
我参与过的项目位于/Area/Controllers/SharedPartialController.cs
,并且该视图的命名位于/Area/Views/SharedPartial/_MenuDropdown.cshtml
希望您在MVC项目中使用“区域”,在这种情况下,我建议每个区域使用一个共享控制器。
即。 /Order/Controllers/TabsPartialController.cs
与Order
区域相关的/User/Controllers/NavTabsPartialController.cs
,然后是import React, { Component } from 'react';
import { View, Text } from 'react-native';
import Meta from './Meta';
import Button from './Button';
class Metas extends Component {
componentWillMount() {
this.setState({
metas: this.props.data,
});
}
addMeta = (newMeta) => {
console.log('Adding new meta');
/*this.props.navigator.push({
id: 'Test'
});*/
const metas = this.state.metas;
metas.push(newMeta);
this.setState({ metas });
console.log(`Metas: ${metas}`);
}
renderData = () => {
console.log('rendering metas data');
return this.state.metas.map(meta => <Meta key={Math.random()} name={meta} />);
}
render() {
return (
<View>
{ this.renderData() }
<View>
<Text>{this.state.metas.length} Metas</Text>
<Button
text='+'
color='#8783FF'
fontColor='white'
size='50'
fontSize='25'
onPress={this.addMeta('New Meta')}
/>
</View>
</View>
);
}
}
export default Metas;
等。